我有依赖性:
<dependency>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit</artifactId>
<version>2.10</version>
</dependency>
并运行测试,其中包括测试网站的表单提交功能。效果很好。我将其打包到本地存储库 mvn install
中,并将其包含在另一个更广泛的项目中。
执行mvn dependency:tree -Dverbose -Dincludes=net.sourceforge.htmlunit
似乎没有透露任何异常
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ myproject ---
[INFO] com.myproject:myproject:war:1.0-SNAPSHOT
[INFO] \- com.myproject:myproject:mp:jar:1.0:compile
[INFO] \- net.sourceforge.htmlunit:htmlunit:jar:2.10:compile
[INFO] \- net.sourceforge.htmlunit:htmlunit-core-js:jar:2.10:compile
所以我不认为任何其他部门造成了问题。然而,如果我将测试从基础项目复制/粘贴到更广泛的项目中,我总是会收到错误:
java.lang.NoSuchMethodError: com.gargoylesoftware.htmlunit.html.HtmlPage.getElementById(Ljava/lang/String;)Lcom/gargoylesoftware/htmlunit/html/HtmlElement;
我已经确保我的 IDE 没有在某处缓存一些不可靠的库,据我所知它是干净的。有什么想法吗?
谢谢
最佳答案
问题是你的这个类来自其他一些 Artifact ,因为你验证它不是直接来自不同版本的 htmlunit,它必须在其他 jar 中着色
为了让 jvm 获取正确的类,请将 htmlunit 依赖项放在依赖项之上,这样它将在类路径中优先考虑
关于java - mvn 依赖导致 htmlunit 出现 NoSuchMethod 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24726650/