我从jboss开始并且已经遇到了麻烦。
我的项目有下一个结构:
root pom.xml - core module - ddbac module - web module - includes core.jar and ddbac.jar -ear module - includes web.war
每个模块还包含一个pom.xml。所有依赖项都在root pom.xml中声明。 当我在ear模块内部执行`mvn clean install`时,我得到的是ear-file,其中包含web.war。此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中的lib?
答案 0 :(得分:1)
您可以使用描述符来指定依赖项。以下方法之一可能对您有用。
<强> 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>
OR
<强> 的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>