【问题标题】:maven dependency - which dependency is using unwanted jar?maven 依赖项 - 哪个依赖项正在使用不需要的 jar?
【发布时间】:2020-04-21 04:05:04
【问题描述】:

我正在升级一个复杂的 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 调试 [packageobsucated.httpclient.HttpClientConfigUtil] (ServerService线程池—— 69) 文件:/server/modules/system/layers/base/org/apache/httpcomponents/main/httpclient-4.3.6.redhat-1.jar!/

如何找出哪个 maven 依赖项正在使用 httpclient-4.3.6.redhat-1.jar?

我在父 pom.xml 文件上调用了 mvn dependency:tree,但恐怕我找不到任何具有该确切描述的内容。

提前致谢,

【问题讨论】:

  • 如果你在jboss中运行,可能是容器提供了jar。我不熟悉它,但路径 /server/modules/system/layers/ 让我认为它可能是容器。实际上,您正在使用的某些库是针对 httpclient 的不同版本编译的,而不是 jboss 提供的版本。
  • 如果是这种情况,您想从 jboss 中排除模块 á la stackoverflow.com/questions/47759298/…
  • @Michael 抱歉,我在写答案时错过了您的评论(无意复制您的想法)。

标签: java maven jboss6.x


【解决方案1】:

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

所以我想如果你想使用不同版本的httpclient,你需要在你的jboss中寻找类加载的顺序。

【讨论】:

  • 谢谢你,JF Meier 和@Michael。有问题的 jar 位于 /modules/system/layers/base/org/apache/httpcomponents/main/httpclient-4.3.6.redhat-1.jar。亲切的问候
猜你喜欢
  • 2014-01-24
  • 1970-01-01
  • 2014-09-12
  • 1970-01-01
  • 2015-09-10
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
相关资源
最近更新 更多