Frage

Wir haben eine sehr seltsame Klasse angetroffen nicht Problem in unserem Web-App gefunden läuft auf Weblogic 10.3. In unserem Code haben wir eine ziemlich Standard XSLT-Transformation.

UtilRequestManagerBean.java:

TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(new StreamSource(new StringReader(xslBuffer.toString())));            
transformer.transform(new StreamSource(new StringReader(sourceBuffer.toString())), new StreamResult(sw));

Dies scheitert in der Produktionsumgebung (Solaris 10, wenn diese Fragen) und erzeugt ein java.lang.NoClassDefFoundError:

<Mar 11, 2010 1:44:08 PM EET> <Info> <EJB> <BEA-010227> <EJB Exception occurred during invocation from home or business: com.company.basicservice.ejb.util.UtilRequestManagerBean_temuyq_HomeImpl@1737be7 threw exception: java.lang.NoClassDefFoundError: Could not initialize class com.sun.org.apache.xalan.internal.xsltc.runtime.BasisLibrary>

Diese Klasse ist ein Teil von rt.jar und ist auf jeden Fall in Classpath. Dies wird durch die folgenden Weblogic Protokoll Schnipsel verifiziert:

sun.boot.class.path = /opt/jdk1.6.0_12/jre/lib/resources.jar:/opt/jdk1.6.0_12/jre/lib/rt.jar:/opt/jdk1.6.0_12/jre/lib/sunrsasign.jar:/opt/jdk1.6.0_12/jre/lib/jsse.jar:/opt/jdk1.6.0_12/jre/lib/jce.jar:/opt/jdk1.6.0_12/jre/lib/charsets.jar:/opt/jdk1.6.0_12/jre/classes

Und Auflistung schließlich den Inhalt der rt.jar zeigt, dass die Klasse ist da:

jar tvf /opt/jdk1.6.0_12/jre/lib/rt.jar | grep BasisLibrary.class
24787 Sat Jan 17 02:25:58 EET 2009 com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.class

So könnte, was auf der Erde sein, das Problem hier?

War es hilfreich?

Lösung

NoClassDefFoundError nicht unbedingt die Klasse bedeuten wurde nicht gefunden -. Es bedeutet, die richtige Version die Klasse nicht geladen wurde

Die meisten wahrscheinlich mehr Versionen der Klasse geladen zu werden. Können Sie überprüfen, ob es eine Quelle des Konflikts ist -. Beispiel einige Klassen als auch in weblogic.jar gebündelt sind,

Überprüfen Sie für dieses Paket org / Apache / xalan / intern / XSLTC / runtime / BasisLibrary oder die BasisLibrary Klasse selbst - ist es vorhanden

Oder versuchen, als erstes Glas in dem Classpath setzen rt.jar

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top