3

我正在开发一个访问本地数据库的项目,然后在 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

任何人都可以给我一个建议或解决方案吗?如果需要任何信息,请随时告诉我。

提前感谢您的帮助。

4

1 回答 1

6

尝试获取更新版本的 log4j,休眠 4 需要(我认为)1.2.12 或更高版本。您可能需要将它放在服务器的 lib 目录中。如果这不起作用,您可能需要改用 hibernate 3。

于 2012-08-20T06:31:31.637 回答