JBoss EAR部署失败,因为WAR类无法从EAR / lib文件夹中找到jar

时间:2018-04-23 22:54:52

标签: deployment war ear wildfly-10 jboss-eap-7

我正在使用JBoss EAP 7并希望以独立模式部署EAR文件(使用standalone-ha.xml)。

我经历了StackOverflow / JBoss论坛上几乎所有可用的内容,但无法使我的部署正常工作(正确)。我尽可能地遵循docs但仍然部署EAR会在控制台上出现异常,因为 WAR / WEB-INF / lib 中的 jar文件无法使用查看存在于 EAR / lib 文件夹中的jar文件。我无法弄清楚我做错了什么。

结构体
myEAR.ear
|- lib (contains a.jar)
|- META-INF
|--- maven (folder with pom)
|--- application.xml
|--- jboss-deployment-structure.xml
|--- MANIFEST.MF
|- myWar.war
|--- WEB-INF
|----- lib (contains b.jar)
|----- jboss-deployment-structure.xml (which should be ignored per the docs)
|----- (WEB-INF contains other files/folders such as classes,jsp etc
EAR- application.xml:
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/application_7.xsd" version="7">
  <display-name>myear</display-name>
  <module>
    <web>
      <web-uri>myWAR.war</web-uri>
      <context-root>/mywar</context-root>
    </web>
  </module>
  <library-directory>lib</library-directory>
</application>
EAR-jboss-deployment-structure.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <deployment>
    <dependencies>
      <module name="com.organization.global" export="true" />
    </dependencies>
  </deployment>
  <!-- Having/Not having below sub-deployment has no effect -->
  <sub-deployment name="myWAR.war">
    <dependencies/>
  </sub-deployment>
</jboss-deployment-structure>

如果我在a.jar文件夹中复制WAR/WEB-INF/lib/,部署会成功,否则会产生一个例外:Caused by: java.lang.NoClassDefFoundError与特定于a.jar的类相关。我希望我的 WAR 能够访问 EAR / lib 中放置的所有jar。

我在其中一个论坛中读到, lib 文件夹中的 jar / classes 应该可用于EAR中的所有模块,但有时它们不是自动添加的,但我无法找到如何添加它们的解决方案。

任何指导都将不胜感激。提前谢谢!

1 个答案:

答案 0 :(得分:1)

在JBoss EAP 7中,要访问战争中存在的lib个文件,您可以尝试在战争web.xml中添加一个上下文参数。

要在终端创建env变量,请尝试下面:

export JAR_HOME=../jboss-eap-7.1/standalone/deployments/example.ear(Please add value equivalent to your environment and ear's path)
export PATH=$PATH:$JAR_HOME
Add this variable to web.xml as file:${JAR_HOME}/lib/example.jar

在战争中出现的类中读取此上下文参数。