2016-06-27 19 views
0

Ich mache eine Migration von JDev 12.1.3 zu 12.2.0 . Nun gab es einige Probleme beim Kompilieren, aber es wurde durch Ändern des Klassenpfads behoben. Jetzt, wenn ich für die Bereitstellung gehe, dann zeigt es mir eine Ausnahme. Das heißt ...java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf (Ljava/lang/String; I) V Ausnahme beim Migrieren von 12.1.3 auf 12.2

"java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf (Ljava/lang/String; I) V"

ich folgende Abhängigkeiten bin mit ..

<dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>5.2.0.Final</version> 
      <type>jar</type> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate.common</groupId> 
      <artifactId>hibernate-commons-annotations</artifactId> 
      <version>5.0.1.Final</version> 
      <type>jar</type> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate.javax.persistence</groupId> 
      <artifactId>hibernate-jpa-2.1-api</artifactId> 
      <version>1.0.0.Final</version> 
      <type>jar</type> 
      <scope>provided</scope> 
     </dependency> 

Abgesehen von diesen Abhängigkeiten habe ich auch in den Ordner "C: \ oracle_home12c \ wlserver \ modules" geschaut und festgestellt, dass es eine "org.jboss.logging.jboss-logging.jar" Datei gab. Ich ersetzte die Maven-Repo-Datei von "jboss-logging-3.3.0.Final". Ich schaute auch in jboss-logging-3.3.0.Final "Jar-Datei. Es gibt eine Logger-Klassendatei, aber sie enthält nicht die Debugf (String) -Methode.

Ausnahmetyp;

Caused by: java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf(Ljava/lang/String;I)V 
    at org.hibernate.internal.NamedQueryRepository.checkNamedQueries(NamedQueryRepository.java:149) 
    at org.hibernate.internal.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:764) 
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:495) 
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:802) 
    at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:135) 
    at weblogic.persistence.BasePersistenceUnitInfo.initializeEntityManagerFactory(BasePersistenceUnitInfo.java:611) 

Kann jemand helfen, dieses Problem loszuwerden weg zu bekommen?

Vielen Dank im Voraus

Antwort

2

Wenn Sie den Glassfish-Server verwenden, könnte das Problem mit der von glassfish bereitgestellten Bibliothek auftreten. Dieser Fehler wird durch die Verwendung einer inkompatiblen Version verursacht.

Erstellen Sie einfach eine glassfish-web.xml Datei im Verzeichnis WEB-INF. Der Inhalt der Datei ist unten dargestellt:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd"> 
<glassfish-web-app> 
     <class-loader delegate="false"/> 
</glassfish-web-app> 

Dies stellt sicher, dass Glasfischen nicht, dass es interne Bibliotheken nicht laden, aber Bibliotheken aus dem Projekt.

0

Ich weiß nicht, wie funktioniert JDev Classloading, aber vielleicht nimmt es die eine falsche Version von Jboss-Protokollierung, die nicht die Methode hat? Versuchen Sie, das aus dem Modulverzeichnis zu entfernen. Und stellen Sie sicher, dass Ihre App jboss-Logging in der .war. Es sollte durch die Abhängigkeiten von Hibernate gebracht werden. Wenn nicht, füge es zur pom.xml hinzu.