我们遇到了一个很奇怪的类没有发现在我们的web应用程序的问题上的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中捆绑以及

检查此包的有机/阿帕奇/的Xalan /内部/ XSLTC /运行/ BasisLibrary或BasisLibrary类本身 - ?是本

或者通过将rt.jar中作为第一罐中,类路径尝试

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top