我刚开始使用 jboss,但已经遇到了麻烦。
我的项目具有以下结构:
root pom.xml - core module - ddbac module - web module - includes core.jar and ddbac.jar -ear module - includes web.war
每个模块还包含一个pom.xml。所有依赖项都在根 pom.xml 中声明。 当我在ear模块内执行“mvn clean install”时,我得到了包含web.war的ear文件。此 web.war 包含 core.jar 和 ddbac.jar。
之后,我将此ear文件部署到jBoss 7.1.1中 - 它可以工作。但是当我开始测试它时 - 执行一些操作 - 我遇到异常:
Caused by: java.lang.ClassNotFoundException: org.springframework.beans.BeansException from [Module "org.apache.cxf:main" from local module loader @5a0deddc (roots: /home/roman/jboss-as-7.1.1.Final/modules)] at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) ... 99 more
所以问题是:如何正确定义依赖项,使 ddbac 模块中的代码可以“看到”web.war 中的库?
最佳答案
您可以使用描述符来指定您的依赖项。以下方法之一可能对您有用。
application.xml。将您的库指定为应用程序内的模块。将 application.xml 放入 ear-root/META-INF/ 并描述您的项目。您必须指定类似的内容:
<application>
<module>
<web>
<web-uri>web.war</web-uri>
<context-root>web</context-root>
</web>
</module>
<module>
<java>web/WEB-INF/lib/ddbac.jar</java>
</module>
</application>
或者
jboss-app.xml。它是 JBOSS 特定的配置文件,也应该位于 META-INF/ 中。
<!DOCTYPE jboss-app PUBLIC "-//JBoss//DTD J2EE Application 5.0//EN"
"http://www.jboss.org/j2ee/dtd/jboss-app_5_0.dtd" >
<jboss-app>
<library-directory>web/WEB-INF/lib</library-directory>
</jboss-app>
关于java - 管理 jBoss 7.1 中 jar 文件的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23888072/