由于将Hibernate从3.2升级到4.3.8,Jboss 4.0.1 SP1中的java.lang.NoSuchMethodError:org.jboss.logging.Logger.getMessageLogger

时间:2015-02-23 12:08:30

标签: hibernate jboss jboss-4.0.x

在将Hibernate从3.2升级到4.3.8时,我面临以下错误消息,导致我的jboss服务器(boss 4.0.1 sp1服务器)没有启动。

java.lang.NoSuchMethodError: org.jboss.logging.Logger.getMessageLogger(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
  at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:194)

进一步研究,我观察到Hibernate引用了自己的Jboss日志jar文件(jboss-logging-3.0.1.GA jar文件),Jboss引用了jboss-common-core jar文件,它们都有共同的类名“logger” .class“在相同的包级别”org.jboss.logging“导致上述错误。

这似乎与Jar冲突有关。我已经尝试了以下选项来解决这个问题,但是我没有成功。

1)从/ lib目录中删除'Jboss-common-core'jar并添加Jboss-logging jar。但是Jboss服务器没有启动,因为运行jboss服务器必须使用Jboss-common-core jar。

2)在server / xxx / lib目录中添加Jboss-logging但它仍然抛出相同的异常。

3)在WEB-INF目录下的war文件中实现类加载机制(“jboss-web.xml”),如下所示。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 5.0//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_4_0.dtd">
<jboss-web>
    <class-loading java2ClassLoadingCompliance="false" >
        <loader-repository>com.example:archive=Example.war<loader-repository-config>java2ParentDelegaton=false</loader-repository-config>
        </loader-repository>
    </class-loading>
</jboss-web>

4)在META-INF目录的ear文件中实现类加载机制(“jboss-app.xml”)。在我们的ear文件中还包含war文件。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-app
    PUBLIC "-//JBoss//DTD J2EE Application 1.4//EN"
    "http://www.jboss.org/j2ee/dtd/jboss-app_4_0.dtd">
<jboss-app>  
  <loader-repository>
  com.example:archive=example.ear
     <loader-repository-config>
     java2ParentDelegation=false
     </loader-repository-config>
  </loader-repository>
</jboss-app>

5)通过调整位于server / xxx / deploy / jbossweb-tomcat50.sar / META-INF / jboss-service.xml描述符中的“UseJBossWebLoader”属性为false。但是它会抛出相同的异常。

有人有想法解决这个问题吗?

0 个答案:

没有答案