2014-12-11 1 views
0

Log4j2에 새 모듈을 추가 한 후 Wildfly 로그가 시작될 때 여러 ClassNotFoundException로 인해 폭발합니다. 그것은 내 새롭게 정의 된 모듈이 아무런 관련이없는 다른 Java EE 클래스를 위해 모듈에서 찾고있는 것처럼 보입니다.새로운 모듈 종속성을 사용할 때 Wildfly ClassNotFoundException이 발생합니다.

다음은 예외 중 하나입니다 : 난 그냥 내가 제대로 모든 것을 매핑했는지 확인하기 위해 내 퍼시스턴스 유닛 아카이브를 배포하려고 순간

17:52:57,865 WARN [org.jboss.modules] (ServerService Thread Pool -- 52) Failed to define class org.apache.logging.log4j.core.net.AbstractJMSReceiver in Module "org.apache.log4j2:main" from local module loader @1c323a (finder: local module finder @125871f (roots: /usr/local/share/wildfly/modules,/usr/local/share/wildfly/modules/system/layers/base)): java.lang.LinkageError: Failed to link org/apache/logging/log4j/core/net/AbstractJMSReceiver (Module "org.apache.log4j2:main" from local module loader @1c323a (finder: local module finder @125871f (roots: /usr/local/share/wildfly/modules,/usr/local/share/wildfly/modules/system/layers/base))) 
     at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:428) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:261) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:76) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.Module.loadModuleClass(Module.java:548) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:189) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:443) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:431) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:373) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:118) [jboss-modules.jar:1.3.0.Final] 
     at java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.7.0_67] 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:800) [rt.jar:1.7.0_67] 
     at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:345) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:423) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:261) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:76) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.Module.loadModuleClass(Module.java:548) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:189) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:443) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:431) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:373) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:118) [jboss-modules.jar:1.3.0.Final] 
     at org.apache.logging.log4j.core.config.plugins.ResolverUtil.addIfMatching(ResolverUtil.java:436) [log4j-core-2.0-rc1.jar:2.0-rc1] 
     at org.apache.logging.log4j.core.config.plugins.ResolverUtil.loadImplementationsInJar(ResolverUtil.java:411) [log4j-core-2.0-rc1.jar:2.0-rc1] 
     at org.apache.logging.log4j.core.config.plugins.ResolverUtil.loadImplementationsInJar(ResolverUtil.java:367) [log4j-core-2.0-rc1.jar:2.0-rc1] 
     at org.apache.logging.log4j.core.config.plugins.ResolverUtil.findInPackage(ResolverUtil.java:264) [log4j-core-2.0-rc1.jar:2.0-rc1] 
     at org.apache.logging.log4j.core.config.plugins.PluginManager.collectPlugins(PluginManager.java:174) [log4j-core-2.0-rc1.jar:2.0-rc1] 
     at org.apache.logging.log4j.core.config.plugins.PluginManager.collectPlugins(PluginManager.java:130) [log4j-core-2.0-rc1.jar:2.0-rc1] 
     at org.apache.logging.log4j.core.config.BaseConfiguration.start(BaseConfiguration.java:152) [log4j-core-2.0-rc1.jar:2.0-rc1] 
     at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:341) [log4j-core-2.0-rc1.jar:2.0-rc1] 
     at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:386) [log4j-core-2.0-rc1.jar:2.0-rc1] 
     at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:149) [log4j-core-2.0-rc1.jar:2.0-rc1] 
     at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:84) [log4j-core-2.0-rc1.jar:2.0-rc1] 
     at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:35) [log4j-core-2.0-rc1.jar:2.0-rc1] 
     at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:444) [log4j-api-2.0-rc1.jar:2.0-rc1] 
     at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:389) [log4j-api-2.0-rc1.jar:2.0-rc1] 
     at com.extraliga.domain.ExtraligaEntity.<init>(Unknown Source) [extraliga-persistence.jar:] 
     at com.extraliga.domain.util.EmailConverter.<init>(Unknown Source) [extraliga-persistence.jar:] 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [rt.jar:1.7.0_67] 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) [rt.jar:1.7.0_67] 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [rt.jar:1.7.0_67] 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:526) [rt.jar:1.7.0_67] 
     at java.lang.Class.newInstance(Class.java:374) [rt.jar:1.7.0_67] 
     at org.hibernate.cfg.annotations.reflection.XMLContext.setLocalAttributeConverterDefinitions(XMLContext.java:206) [hibernate-core-4.3.1.Final.jar:4.3.1.Final] 
     at org.hibernate.cfg.annotations.reflection.XMLContext.addDocument(XMLContext.java:113) [hibernate-core-4.3.1.Final.jar:4.3.1.Final] 
     at org.hibernate.cfg.Configuration.add(Configuration.java:528) [hibernate-core-4.3.1.Final.jar:4.3.1.Final] 
     at org.hibernate.cfg.Configuration.add(Configuration.java:517) [hibernate-core-4.3.1.Final.jar:4.3.1.Final] 
     at org.hibernate.cfg.Configuration.add(Configuration.java:512) [hibernate-core-4.3.1.Final.jar:4.3.1.Final] 
     at org.hibernate.cfg.Configuration.add(Configuration.java:686) [hibernate-core-4.3.1.Final.jar:4.3.1.Final] 
     at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:724) [hibernate-core-4.3.1.Final.jar:4.3.1.Final] 
     at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.buildHibernateConfiguration(EntityManagerFactoryBuilderImpl.java:1163) [hibernate-entitymanager-4.3.1.Final.jar:4.3.1.Final] 
     at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:846) [hibernate-entitymanager-4.3.1.Final.jar:4.3.1.Final] 
     at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:843) [hibernate-entitymanager-4.3.1.Final.jar:4.3.1.Final] 
     at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:399) [hibernate-core-4.3.1.Final.jar:4.3.1.Final] 
     at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:842) [hibernate-entitymanager-4.3.1.Final.jar:4.3.1.Final] 
     at org.jboss.as.jpa.hibernate4.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.java:44) [jipijapa-hibernate4-3-1.0.1.Final.jar:] 
     at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:154) [wildfly-jpa-8.0.0.Final.jar:8.0.0.Final] 
     at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:117) [wildfly-jpa-8.0.0.Final.jar:8.0.0.Final] 
     at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.7.0_67] 
     at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:474) [wildfly-security-manager-1.0.0.Final.jar:1.0.0.Final] 
     at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:182) [wildfly-jpa-8.0.0.Final.jar:8.0.0.Final] 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_67] 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_67] 
     at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_67] 
     at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.1.Final.jar:2.1.1.Final] 
Caused by: java.lang.NoClassDefFoundError: javax/jms/MessageListener 
     at java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.7.0_67] 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:800) [rt.jar:1.7.0_67] 
     at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:345) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:423) [jboss-modules.jar:1.3.0.Final] 
     ... 63 more 
Caused by: java.lang.ClassNotFoundException: javax.jms.MessageListener from [Module "org.apache.log4j2:main" from local module loader @1c323a (finder: local module finder @125871f (roots: /usr/local/share/wildfly/modules,/usr/local/share/wildfly/modules/system/layers/base))] 
     at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:197) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:443) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:431) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:373) [jboss-modules.jar:1.3.0.Final] 
     at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:118) [jboss-modules.jar:1.3.0.Final] 
     ... 67 more 

,이 아카이브는 Log4j2에 따라 달라집니다. 내 지속성 아카이브의 META-INF 디렉토리에서 나는이처럼 보이는 JBoss에 배포-structure.xml 있습니다

내 모듈은 제이보스에 다음 디렉토리 구조에 의해 정의된다
<?xml version="1.0" encoding="UTF-8"?> 
<jboss-deployment-structure> 
    <deployment> 
     <exclusions> 
      <module name="org.apache.log4j"/> 
     </exclusions> 
     <dependencies> 
      <module name="org.apache.log4j2"> 
       <imports> 
        <include path="META-INF"/> 
       </imports> 
      </module> 
     </dependencies> 
    </deployment> 
</jboss-deployment-structure> 

:

$WILDFLY_HOME/modules/org/apache/log4j2/main/ 
    log4j-api-2.0-rc1.jar 
    log4j-core-2.0-rc1.jar 
    module.xml 

그리고 마지막으로 내을 Module.xml은 다음과 같다 :

<?xml version="1.0" encoding="UTF-8"?> 
<module xmlns="urn:jboss:module:1.1" name="org.apache.log4j2"> 
    <resources> 
     <resource-root path="log4j-api-2.0-rc1.jar"/> 
     <resource-root path="log4j-core-2.0-rc1.jar"/> 
    </resources> 
    <dependencies> 
     <module name="com.lmax.disruptor"/> 
     <module name="javax.api"/> 
     <module name="javax.servlet.api"/> 
    </dependencies> 
</module> 

그것은 제이보스도이 시점에서 javax.jms.MessageListener을 찾기 위해 시도 할 수, 더욱 그렇게하는 것이 매우 이상한 것 같다 그것을 찾고 있습니다 "org.apache.log4j2 : main"

누구든지이 예외를 해결하는 방법을 알고 있습니까?

답변

1

WildFly는 javax.jms.MessageListener을 찾으려고하지 않고 org.apache.logging.log4j.core.net.AbstractJMSReceiver입니다. log4j2가 얼마나 많은 다른 의존성을 가지고 있는지 모르지만 적어도 의존성으로 javax.jmx을 추가해야합니다.

+0

종속성 트리 (http://logging.apache.org/log4j/2.x/log4j-core/dependencies.html#Dependency_Tree)에는 org.jboss.spec.javax.jms : jboss-jms-api_1이 나와 있습니다. 1_spec : jar : 1.0.1.Final –

+0

그랬다. 모듈은 제 3 자의 두 개의 새로운 모듈을 포함하여 여러 라이브러리를 필요로한다. 아마 이것을하는 더 쉬운 방법이있을 것이지만, 그것은 현재 일하고 있습니다. 고맙습니다. –

+0

또한 javax.servlet.api 종속성은 완전히 불필요 해 보입니다. – ctomc