当前尝试从JAVA访问类型库文件,我尝试了以下错误,并给出了相应的错误:
1- Com2Java:每次尝试连接到我的应用程序时,我都会收到此错误:
Minidumps are not enabled by default on client versions of Windows
2- Com4j:它仅产生接口,无法理解如何使用它们(我找不到任何类,只是接口)
3-经过一番搜索,发现了有关Visual J ++的信息,但由于无法下载而无法下载。
谁能提供建议?
谢谢
最佳答案
我以前没有使用过Com2Java或Com4j,但是很久以前,我使用了一个名为JavaCOMBridge(https://sourceforge.net/projects/jacob-project/)的库。
我使用的JavaCOMBridge版本无法处理多重继承,而且我看不出有什么好方法可以做到这一点。
忘记Visual J ++。这是由Microsoft创建的可憎的事情,被起诉遗忘了。
如果您同时具有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/
上面的页面包含一个常见问题解答的链接,但它有些过时了。