[转]Exception:java.lang.NoSuchFieldError: TRACE

Exception:java.lang.NoSuchFieldError: TRACE 

Exception in thread "main" java.lang.NoSuchFieldError: TRACE
    at org.jboss.logging.Log4jLoggerPlugin.isTraceEnabled(Log4jLoggerPlugin.java:85)
    at org.jboss.logging.Logger.isTraceEnabled(Logger.java:122)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:660)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627)
    at javax.naming.InitialContext.lookup(InitialContext.java:351)
    at jp.fukuoka.pref.kiban.common.util.ServiceLocator.getEjbHome(ServiceLocator.java:124)
    at jp.fukuoka.pref.kiban.common.batch.OnlineSequencer.next(OnlineSequencer.java:48)
    at  jp.fukuoka.pref.kiban.common.api.ProcessRequestMessageAccessor.setProcessRequestMessage(ProcessRequestMessageAccessor.java:74)
    at jp.fukuoka.pref.kiban.sample.common.batch.MyDelayedOnBatchRequester.request(MyDelayedOnBatchRequester.java:38)
    at jp.fukuoka.pref.kiban.sample.common.batch.MyDelayedOnBatchRequester.main(MyDelayedOnBatchRequester.java:53)

出现该异常的原因是: 项目中导入的log4j版本和jboss的client下的log4j版本不一致(jboss的版本>项目中导入的版本)

解决方法: 将jboss下的log4j替换项目中的log4j包就可以了,注意EJB和EJB客户端都需要替换,替换一个同样存在问题。

解决了该问题后在jboss中部署可能产生下面问题:

09:27:42,500 ERROR [STDERR] log4j:ERROR A "org.jboss.logging.appender.FileAppender" object is not assignable to a

"org.apache.log4j.Appender" variable.
09:27:42,500 ERROR [STDERR] log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
09:27:42,500 ERROR [STDERR] log4j:ERROR [org.jboss.mx.loading.UnifiedClassLoader3@13849df{

url=file:/C:/osac/jboss-4.2.2.GA/server/default/deploy/sample_common.war/ ,addedOrder=46}] whereas object of type
09:27:42,500 ERROR [STDERR] log4j:ERROR "org.jboss.logging.appender.FileAppender" was loaded by

[org.jboss.system.server.NoAnnotationURLClassLoader@89cf1e].
09:27:42,515 ERROR [STDERR] log4j:ERROR Could not instantiate appender named "FILE".

解决方法:

将jboss/lib中的 jboss-common.jar包复制到项目的lib中即可。这样就可以让项目中的日志和jboss中的日志一起工作。

你可能感兴趣的:(java,apache,log4j,jboss,ejb)