找不到rt.jar的类

km2*_*000 8 java classnotfoundexception jboss7.x

在JBOSS EAP 6(AS 7)中:

我正在调用Spring的WebServiceTemplate.marshalSendAndRecieve,这反过来又找不到在rt.jar中出现的类

Caused by: java.lang.ClassNotFoundException: com.sun.org.apache.xerces.internal.dom.DocumentImpl
Run Code Online (Sandbox Code Playgroud)

我不明白这是怎么发生的?当然,rt.jar中的所有内容都会在启动时加载?

有任何想法吗?

谢谢,

肯尼

km2*_*000 16

好的,我找到了一个解决方案(不确定它是否正确,但它有效).

我注意到通过运行java -verbose:class,只加载了rt.jar中的一些类而不是我需要的类(com.sun.org.apache.xerces.internal.dom.DocumentImpl)

所以在JBoss EAP 6(As 7)中有一个模块目录($ JBOSS_HOME/modules /),这里有sun/jdk/main/modules.xml

我添加了以下条目:

<path name="com/sun/org/apache/xerces/internal/dom"/>
<path name="com/sun/org/apache/xerces/internal/xni"/>
<path name="com/sun/org/apache/xerces/internal/jaxp"/>
Run Code Online (Sandbox Code Playgroud)

(最后2因为在dom中添加后未找到后续类别的例外)

正如我所说,我不能100%确定这是否是正确的方法.欢迎任何输入!

谢谢,

肯尼

  • 这有点是您需要的解决方案.其他方法是将其包含在jboss-deployment-structure.xml中.在任何情况下,您都不应该在应用程序中使用com.sun*包,因为这使得它无法移植到其他jvms,并且它可以在不事先通知的情况下删除它. (2认同)