首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从JAVA访问.tlb

从JAVA访问.tlb
EN

Stack Overflow用户
提问于 2016-10-05 07:22:45
回答 1查看 1.3K关注 0票数 1

目前,我试图从JAVA访问类型库文件,我尝试了以下操作,并有相应的错误:

1- Com2Java:每次尝试连接到我的应用程序时,我都会收到这个错误:

Minidumps are not enabled by default on client versions of Windows

2- Com4j:它只生成接口,无法理解如何使用它们(我找不到任何类,只是接口)

3-经过一次小范围的搜索,发现了关于VisualJ++的信息,但却无法下载,因为它遭到了不满。

有人能给我建议吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-10-05 07:38:35

我以前没有使用过Com2Java或Com4j,但是很久以前我使用了一个名为JavaCOMBridge (https://sourceforge.net/projects/jacob-project/)的库。

我使用的JavaCOMBridge版本无法处理多项继承,我也不知道如何才能找到一种很好的方法。

忘记视觉J++吧。这是微软制造的一种令人憎恶的行为,并被起诉而被遗忘。

如果您在C和Java方面都有经验,并且需要桥接的API数量并不多,那么我建议直接使用JNI。

下面是一个使用编辑的示例:

代码语言:javascript
复制
package test;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
public class JaCoBTest {
        public static void main(String[] args) {
                String EXCEL_FILE = "FullPathOfAnExcelFile.xlsx";
                // Using Excel as an example
                ActiveXComponent app = new ActiveXComponent("Excel.Application");
                // Modify a property, to show Excel window
                app.setProperty("Visible", true);
                // Get Excel workbook object
                Dispatch workbook = app.getProperty("Workbooks").toDispatch();
                // Call method, to open an Excel file
                Dispatch.call(workbook, "Open", new Variant(EXCEL_FILE), new Variant("1"));
                // Wait for 5 seconds
                try {
                        Thread.sleep(1000);
                } catch (InterruptedException iex) {
                        iex.printStackTrace();
                }
                // Close Excel without saving
                workbook.call(workbook, "Close");
                // Close is supposed to have three optional parameteters, but the line below is not working
                //workbook.call(workbook, "Close", new Variant(false), Variant.DEFAULT, Variant.DEFAULT);
                // Close Excel
                Dispatch.call(app, "Quit");
        }
}

在上面的代码中有一个问题--我不能让可选的参数工作。函数Workbook.Close应该接受三个可选参数,但是调用总是失败,参数数无效。

我还找到了我当时使用的网页:http://danadler.com/jacob/,上面的页面包含一个常见问题的链接,但它有点过时了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39867763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档