gpt4 book ai didi

java - 从 JAVA 访问 .tlb

转载 作者:太空宇宙 更新时间:2023-11-04 12:11:01 26 4
gpt4 key购买 nike

当前尝试从JAVA访问类型库文件,我已尝试以下操作并出现相应错误:

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

Minidumps are not enabled by default on client versions of Windows

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

3- 经过一番小搜索后,发现了 Visual J++,但无法下载,因为它已停止使用。

谁能给点建议吗?

谢谢

最佳答案

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

我使用的 JavaCOMBridge 版本无法处理多重继承,而且我不知道如何有一个好的方法来做到这一点。

忘记 Visual J++。这是微软创造的令人厌恶的东西,并被起诉而被遗忘。

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

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

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/上面的页面包含常见问题解答的链接,但它有点过时了。

关于java - 从 JAVA 访问 .tlb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39867763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com