java参数从非内部路径加载类

guykilcj  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(350)

我需要类documentimpl,它可以通过path在xercesimpl.jar中获得 org/apache/xerces/dom/DocumentImpl . 但是我的代码因为丢失而失败了 com/sun/org/apache/xerces/internal/dom/DocumentImpl . 如果我将jaxp-ri.jar添加到类路径中,它可以工作,但是如果我已经有了类,我不想使用jaxp-ri.jar。
在classloading策略中,首先加载我的xercesimpl.jar。有没有办法告诉我的代码使用路径 org/apache/xerces/dom/ 而不是 com/sun/org/apache/xerces/internal/dom/ ? 通过jvm参数?
为什么要使用第二条路径?
我正在websphere应用服务器上运行servlet。谢谢您
编辑:这是我的跟踪:

Caused by: java.lang.NoClassDefFoundError: com.sun.org.apache.xerces.internal.dom.DocumentImpl
    at java.lang.ClassLoader.defineClassImpl(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:275)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:74)
    at com.ibm.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:833)
    at com.ibm.ws.classloader.CompoundClassLoader.localFindClass(CompoundClassLoader.java:746)
    at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:587)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:665)
    at com.sun.xml.messaging.saaj.soap.SOAPPartImpl.<init>(SOAPPartImpl.java:96)
    at com.sun.xml.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.<init>(SOAPPart1_1Impl.java:68)
    at com.sun.xml.messaging.saaj.soap.ver1_1.Message1_1Impl.getSOAPPart(Message1_1Impl.java:88)
    at myclass.CreateMessage(myclass.java:1337)

edit2:我使用非oraclejvm。我还添加了以下jvm参数:

-Dorg.xml.sax.parser=org.apache.xerces.parsers.SAXParser
-Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl
-Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
-Djavax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpl
-Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.MessageFactoryImpl
yhived7q

yhived7q1#

我将尝试通过代码中的完整路径显式引用该类。
它可能和ide自动解析不需要的导入一样简单。

org.apache.xerces.dom.DocumentImpl myVariable;

相关问题