【发布时间】: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 抱歉,我在写答案时错过了您的评论(无意复制您的想法)。