我有一个Web应用程序部署到Linux上的jboss eap 7.0。
在我的java代码中,我正在使用javax.json.JsonValue.asJsonArray
方法。 当我在雄猫本地运行时,一切运行正常。
一旦我部署到Jboss,我在asJsonArray方法上得到一个nosuchmethod错误。 在我的 WEB-INF\lib 文件夹中,我有必要的 json jar 与该方法javax.json-1.1.4.jar
.我发现在 Jboss 中的模块下,它有自己的javax.json
jboss-eap-7.0modulessystemlayersbaseorgglassfishjavaxjsonmainjavax.json-1.0.3.redhat-1.jar
版本。
我的推测是,当我运行我的应用程序时,它首先查看的是 Jboss 模块目录中的 jar,而不是 war 文件中WEB-INFlib
文件夹中的 jar。如何指示应用程序引用WEB-INFlib
中的 jar 而不是 jboss 模块中的 jar?
您可以使用 jboss-deployment-structure.xml 文件排除 JBoss 提供的依赖项,该文件需要放置在战争的 WEB-INF 目录下。您必须指定如下所示的排除依赖项。
`<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="$LIBRARY_OR_MODULE_YOU_WANT_TO_EXCLUDE"/>
</exclusions>
</deployment>
</jboss-deployment-structure>`
例如<module name="javax.json.api"/>