目前尝试从JAVA访问类型库文件,我尝试了以下相应的错误:
1- Com2Java:每次尝试连接到我的应用程序时都会收到此错误:
Minidumps are not enabled by default on client versions of Windows
2- Com4j:它只产生接口,无法理解如何使用它们(我找不到任何类,只是接口)
3-经过一次小小的搜索后,发现了Visual J ++,但无法下载,因为它已经被删除了。
有人可以提供建议吗?
谢谢
答案 0 :(得分:0)
之前我没有使用过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/ 上面的页面包含常见问题解答的链接,但它有点过时了。