Java 用于EAR部署的Jboss嵌套依赖项

Java 用于EAR部署的Jboss嵌套依赖项,java,maven,jboss,ejb,ear,Java,Maven,Jboss,Ejb,Ear,我正在开发一个将部署到jboss wildfly服务器的EAR。ear所依赖的不同项目之间共享了一堆通用代码。该代码被打包到一个jar中,并放入EAR的lib目录中。到目前为止还不错,但我一开始部署就遇到了问题“Common.jar”有自己的一组依赖项,类加载器似乎无法找到这些依赖项。当我尝试启动服务器时,出现以下错误: 10:49:08,686 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Fail

我正在开发一个将部署到jboss wildfly服务器的EAR。ear所依赖的不同项目之间共享了一堆通用代码。该代码被打包到一个jar中,并放入EAR的lib目录中。到目前为止还不错,但我一开始部署就遇到了问题“Common.jar”有自己的一组依赖项,类加载器似乎无法找到这些依赖项。当我尝试启动服务器时,出现以下错误:

10:49:08,686 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.deployment.subunit."Person.ear"."Person-web.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.subunit."Person.ear"."Person-web.war".POST_MODULE: WFLYSRV0153: Failed to process phase POST_MODULE of subdeployment "Person-web.war" of deployment "Person.ear"
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:183)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1739)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1701)
    at org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1559)
    at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
    at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: WFLYSRV0177: Error getting reflective information for class com.tura.common.servlet.LogoutServlet with ClassLoader ModuleClassLoader for Module "deployment.Person.ear" from Service Module Loader
    at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:78)
    at org.jboss.as.ee.metadata.MethodAnnotationAggregator.runtimeAnnotationInformation(MethodAnnotationAggregator.java:57)
    at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.handleAnnotations(InterceptorAnnotationProcessor.java:106)
    at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:91)
    at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:76)
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:176)
    ... 8 more
Caused by: java.lang.NoClassDefFoundError: org/stringtemplate/v4/STWriter
    at java.lang.Class.getDeclaredFields0(Native Method)
    at java.lang.Class.privateGetDeclaredFields(Class.java:2583)
    at java.lang.Class.getDeclaredFields(Class.java:1916)
    at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:72)
    at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70)
    ... 13 more
Caused by: java.lang.ClassNotFoundException: org.stringtemplate.v4.STWriter from [Module "deployment.Person.ear" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:255)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
    ... 18 more
10:49:08686错误[org.jboss.msc.service.fail](msc服务线程1-2)MSC000001:无法启动服务jboss.deployment.subunit.“Person.ear”“Person web.war”。发布模块:org.jboss.msc.service.StartException in service jboss.deployment.subunit.“Person.ear”“Person web.war”.POST_模块:WFLYSRV0153:无法处理部署“Person.ear”的子部署“Person web.war”的阶段POST_模块
位于org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:183)
位于org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1739)
位于org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1701)
位于org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1559)
位于org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
位于org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
位于org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
位于org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
运行(Thread.java:745)
原因:java.lang.RuntimeException:WFLYSRV0177:从服务模块加载器获取类com.tura.common.servlet.LogoutServlet的反射信息时出错,该类包含模块“deployment.Person.ear”的ClassLoader ModuleClassLoader
位于org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:78)
位于org.jboss.as.ee.metadata.MethodAnnotationAggregator.runtimeAnnotationInformation(MethodAnnotationAggregator.java:57)
位于org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.handleAnnotations(InterceptorAnnotationProcessor.java:106)
位于org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:91)
位于org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:76)
位于org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:176)
... 8个以上
原因:java.lang.NoClassDefFoundError:org/stringtemplate/v4/STWriter
位于java.lang.Class.getDeclaredFields0(本机方法)
位于java.lang.Class.privateGetDeclaredFields(Class.java:2583)
位于java.lang.Class.getDeclaredFields(Class.java:1916)
位于org.jboss.as.server.deployment.reflect.ClassReflectionIndex.(ClassReflectionIndex.java:72)
位于org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70)
... 还有13个
原因:java.lang.ClassNotFoundException:org.stringtemplate.v4.STWriter来自[服务模块加载器中的模块“deployment.Person.ear]
位于org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:255)
位于org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
位于org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
位于org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
... 还有18个

我已经尝试了我能想到的一切,似乎没有任何帮助。到目前为止,我找到的所有文档和信息都是关于jboss模块的依赖项。如何设置对嵌套在jar中的第三方库的依赖关系?

您可以部署jar本身吗?如果您不能部署它,那么EAR将无法工作。找不到类意味着它无法在StringTemplate中找到它第三方库在哪里?如果您的
common.jar
位于
EAR/lib
目录中,那么第三方库也应该在那里。