使用htmlunit导致NoSuchMethod错误的mvn依赖项

时间:2014-07-13 20:05:26

标签: java maven htmlunit

我有依赖:

<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不会在某个地方缓存一些狡猾的图书馆,所以我可以告诉它干净。有什么想法吗?

由于

1 个答案:

答案 0 :(得分:1)

问题是你有这个类来自其他一些神器,因为你确认它不是直接来自htmlunit的不同版本,它必须在其他jar中加阴影

为了让jvm获得正确的类,请将htmlunit依赖项置于依赖项之上,这样它将首先在classpath中获得优先级