我正在开发一个访问本地数据库的项目,然后在 JBoss AP 服务器中调用远程 EJB 服务。
因此,我使用 hibernate-release-4.1.5.Final 作为 hibernate 和 jbossall-client.jar 来调用远程 EJB 服务。
但是,在运行 jndiContext.lookup("xxx") 方法时,出现异常,消息如下所示。
Exception in thread "main" java.lang.NoSuchFieldError: TRACE
at org.jboss.logging.Log4jLogger.translate(Log4jLogger.java:64)
at org.jboss.logging.Log4jLogger.isEnabled(Log4jLogger.java:39)
at org.jboss.logging.Logger.isTraceEnabled(Logger.java:98)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:623)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:590)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
我试过发现Hibernate框架的jboss-logging-3.1.0.GA.jar会和jbossall-client.jar冲突。
如果排除此 jar,则 EJB 可以成功运行,但休眠部分将无法运行。
我很好奇这个异常是否是由 jboss-logging-3.1.0.GA.jar 的 Log4J 和 jbossall-client.jar 之一之间的版本差异引起的。
我在项目中放入的 jars 如下所示。
1.antlr-2.7.7.jar
2.dom4j-1.6.1.jar
3.hibernate-commons-annotations-4.0.1.Final.jar
4.hibernate-core-4.1.5.Final.jar
5.hibernate- jpa-2.0-api-1.0.1.Final.jar
6.javassist-3.15.0-GA.jar
7.jboss-logging-3.1.0.GA.jar
8.jboss-transaction-api_1.1_spec-1.0.0 .Final.jar
9.jbossall-client.jar
JDK:jdk1.6.0_25
任何人都可以给我一个建议或解决方案吗?如果需要任何信息,请随时告诉我。
提前感谢您的帮助。