gpt4 book ai didi

java - XSLT 传输失败,因为 Weblogic 找不到位于 rt.jar 中的类

转载 作者:行者123 更新时间:2023-11-29 06:22:38 32 4
gpt4 key购买 nike

我们在 Weblogic 10.3 上运行的 Web 应用程序中遇到了一个非常奇怪的类未找到问题。在我们的代码中,我们进行了非常标准的 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

关于java - XSLT 传输失败,因为 Weblogic 找不到位于 rt.jar 中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2424681/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com