我正在开发一个访问本地数据库的项目,然后在JBoss AP服务器中调用远程EJB服务。
因此,我使用hibernate的hibernate-release-4.1.5.Final和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就会成功运行,但是hibernate部分将不起作用。
我很好奇这个异常是由于jboss-logging-3.1.0.GA.jar的Log4J与jbossall-client.jar之间的版本之间的差异造成的。
我在项目中放入的罐子如下所示。
1.antlr-2.7.7.jar
2.dom4j-1.6.1.jar
3.hibernate公地的注解,4.0.1.Final.jar
4.hibernate核心,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-测井3.1.0.GA.jar
8.jboss-交易api_1.1_spec-1.0.0.Final.jar
9.jbossall-client.jar中
JDK:jdk1.6.0_25
有人可以给我一个建议或解决方案吗? 如果需要任何信息,请随时告诉我。
提前感谢您的帮助。
答案 0 :(得分:6)
尝试抓住newer version of log4j,hibernate 4需要(我认为)1.2.12或更高。您可能需要将它放在服务器的lib目录中。如果这不起作用,您可能需要使用hibernate 3。