我正在使用jacob jar从java代码中调用excel表的宏..
final ActiveXComponent excel = new ActiveXComponent("Excel.Application");
final Dispatch workbooks = excel.getProperty("Workbooks") .toDispatch();
final Dispatch workBook = Dispatch.call(workbooks, "Open", file.getAbsolutePath()).toDispatch();
com.jacob.com.Variant f = new com.jacob.com.Variant(true);
Dispatch.call(workBook, "Close", f);
并且还使用maven添加所有jar依赖项。但后来我意识到我需要添加.DLL文件然后我手动添加了jacob jar并在本机库中提供了dll文件但现在正在
Exception in thread "main" java.lang.NoSuchMethodError: com.jacob.com.Dispatch.call(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)Lcom/jacob/com/Variant;
at com.common.getData.callMacro(getData.java:650)
at com.testcases.PathAndAction.testScreen(PathAndAction.java:874)
at com.testcases.MainTestClass.testScreen(MainTestClass.java:54)
at com.testcases.MainTestClass.main(MainTestClass.java:15)
答案 0 :(得分:3)
这可能意味着在运行时,您使用com.jacob.com.Dispatch
的jar版本与编译的com.common.getData
版本不同。它告诉你类com.jacob.com.Dispatch
确实存在,但它没有名为call
的方法,它将Dispatch, String, Object
作为参数。
您是否可以使用一个jar进行编译,但可以使用另一个jar进行编译?