Передача XSLT не удалась, поскольку Weblogic не может найти класс, расположенный в rt.jar.

StackOverflow https://stackoverflow.com/questions/2424681

Вопрос

Мы столкнулись с очень странной проблемой: класс не найден в нашем веб-приложении, работающем на Weblogic 10.3.В нашем коде мы выполняем довольно стандартное преобразование XSLT.

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));

В нашей производственной среде это не удается (Solaris 10, если это имеет значение) и выдает ошибку 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>

Этот класс является частью rt.jar и определенно находится в пути к классам.Это подтверждается следующим фрагментом журнала Weblogic:

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

И, наконец, список содержимого rt.jar показывает, что класс существует:

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

Так в чем же здесь может быть проблема?

Это было полезно?

Решение

NoClassDefFoundError не обязательно означает, что класс не найден — это означает, что правильная версия класса не был загружен.

Скорее всего, загружается несколько версий класса.Можете ли вы проверить, есть ли источник конфликта? Например, некоторые классы также включены в weblogic.jar.

Проверьте наличие этого пакета org/apache/xalan/internal/xsltc/runtime/BasisLibrary или самого класса BasisLibrary – он присутствует?

Или попробуйте поместить rt.jar в качестве первого jar в пути к классам.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top