我们最近从jboss 6.1 eap迁移到6.4 eap,但面临类加载问题。
在我的项目lib中需要使用apache httpcore 4.4.1,但是6.4中包含了apache httpcore 4.3.3。这个以前我们使用 jboss 6.1 时这不是问题,因为 resteasy-jaxrs module.xml 没有导出 httpcore 库。
现在使用 jboss 6.4 我们得到异常:
Caused by: java.lang.NoSuchMethodError: org.apache.http.util.Asserts.check(ZLjava/lang/String;Ljava/lang/Object;)V
这是因为我的项目在运行时使用的是 jboss 提供的 jar,并且没有具有所需签名的此方法。
现在我想强制我的应用程序不使用 jboss jar 并使用 web-inf/lib 文件夹中可用的 jar。
我试图通过 jboss-deployment-structure.xml 排除它,但不知何故它不起作用,它仍然只使用来自 jboss 的 jar。
下面是 jboss-deployment-structure.xml 文件的截图。
<deployment>
<exclusions>
<module name="org.apache.httpcomponents" />
</exclusions>
<dependencies>
module name="org.apache.httpcomponents" />
</dependencies>
</deployment>
有人可以帮我解决这里缺少的东西吗,或者有其他选择吗...
最佳答案
因为您使用的是 JBoss EAP,您可以为 EAP 6.4(所以您的版本应该是 JBoss EAP 6.4.7)应用 CP07 补丁,这个问题已经得到解决。我强烈建议应用 CP07 补丁。
或者,您可以设置 <module name="org.apache.httpcomponents" export="false"/>
在$JBOSS_MODULES\org\jboss\resteasy\resteasy-jaxrs\main\module.xml
.
但是,我建议应用补丁作为推荐的解决方案。这样您就不会修改产品随附的配置。
关于java - 需要从 jboss 6.4 模块中排除 apache httpcomponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35286876/