java.lang.NoSuchMethodError: org.jboss.logging.Logger.getMessageLogger в Jboss 4.0.1 SP1 в связи с обновлением Hibernate с 3.2 до 4.3.8
При обновлении 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 ссылается на свой собственный jar-файл журналирования Jboss (jboss-logging-3.0.1.GA jar-файл), а Jboss ссылается на jar-файл jboss-common-core, которые оба имеют общее имя класса "logger.class". на том же уровне пакета "org.jboss.logging", который вызывает вышеуказанную ошибку.
Это похоже на проблему с конфликтом Jar. Я попробовал следующие варианты, чтобы решить эту проблему, но я не добился успеха.
1) Удаление jar 'Jboss-common-core' из каталога /lib и добавление jar-logging jar. Однако Jboss-сервер не запускается, потому что Jboss-core-core-jar является обязательным для запуска jboss-сервера.
2) Добавление Jboss-logging в каталог server/xxx/lib, но оно по-прежнему вызывает то же исключение.
3) Реализация механизма загрузки классов ("jboss-web.xml") в файле war в каталоге WEB-INF, как показано ниже.
<?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) Реализация механизма загрузки классов ("jboss-app.xml") в файле ear в каталоге META-INF. В нашем файле 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) Путем изменения атрибута "UseJBossWebLoader" в значение false, расположенное в дескрипторе server/xxx/deploy/jbossweb-tomcat50.sar/META-INF/jboss-service.xml. Но он выдает то же самое исключение.
У кого-нибудь есть идея решить проблему?