Maven依赖 - 哪个依赖正在使用不需要的jar?

3
我正在升级一个复杂的maven项目,有许多pom文件。 该代码使用openjdk构建,并在jboss6.*上运行。
启动Jboss时,我会遇到以下异常:
NoSuchMethodError:org.apache.http.conn.ssl.SSLConnectionSocketFactory.(Ljavax / net / ssl / SSLContext; Ljavax / net / ssl / HostnameVerifier;) V
起初,看起来像是我没有导入正确的maven依赖项。
我查看了发生异常的项目的pom文件,并找到了以下依赖项:
<dependency>
 <groupId>org.apache.httpcomponents</groupId>
 <artifactId>httpclient</artifactId>
 <version>4.5.5</version>
</dependency>

然而,当添加以下行时:
LOGGER.debug(org.apache.http.conn.ssl.SSLConnectionSocketFactory.class.getProtectionDomain().getCodeSource().getLocation().getPath());

我看到的输出如下:

11:54:37,037 DEBUG [packageobsucated.httpclient.HttpClientConfigUtil] (ServerService Thread Pool -- 69) file:/server/modules/system/layers/base/org/apache/httpcomponents/main/httpclient-4.3.6.redhat-1.jar!/

我该如何找出使用httpclient-4.3.6.redhat-1.jar的maven依赖项呢?
我在父级 pom.xml 文件上调用了 mvn dependency:tree,但恐怕我找不到具有该精确描述的内容。
提前致谢,

1
如果您正在运行jboss,可能是容器提供了jar包。我不太熟悉它,但路径/server/modules/system/layers/让我想到这可能是容器。实际上,您使用的某个库是针对与jboss提供的httpclient版本不同的版本进行编译的。 - Michael
1
如果是这种情况,您想要从jboss中排除该模块,就像https://dev59.com/cFYN5IYBdhLWcg3wO2DE一样。 - Michael
1
@Michael 对不起,我在回答时错过了你的评论(没有意图抄袭你的想法)。 - J Fabian Meier
1个回答

2

我不是jboss专家,但我猜这个依赖项是从jboss内部的一个模块加载的,即不是从你的war文件中加载的。

因此,如果你想使用不同版本的httpclient,我猜你需要查找jboss中类加载的顺序。


谢谢 JF Meier 和 @Michael。有问题的 jar 存在于 <jboss6>/modules/system/layers/base/org/apache/httpcomponents/main/httpclient-4.3.6.redhat-1.jar。祝好。 - Lucas T

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接