得到java.lang.NoSuchMethodError

时间:2014-02-14 03:42:39

标签: java macros

我正在使用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)

1 个答案:

答案 0 :(得分:3)

这可能意味着在运行时,您使用com.jacob.com.Dispatch的jar版本与编译的com.common.getData版本不同。它告诉你类com.jacob.com.Dispatch确实存在,但它没有名为call的方法,它将Dispatch, String, Object作为参数。

您是否可以使用一个jar进行编译,但可以使用另一个jar进行编译?