Мне нужен класс DocumentImpl, который доступен в xercesImpl.jar по пути org/apache/xerces/dom/DocumentImpl
. Но мой код не работает из-за отсутствия com/sun/org/apache/xerces/internal/dom/DocumentImpl
. Если я добавлю jaxp-ri.jar к classpath, он работает, но я не хочу использовать jaxp-ri.jar, если у меня уже есть класс.Параметр Java для загрузки класса из не внутреннего пути
Из политики загрузки, сначала загружается мой xercesImpl.jar. Есть ли способ сказать моему коду использовать путь org/apache/xerces/dom/
вместо com/sun/org/apache/xerces/internal/dom/
? Через JVM args?
Почему в любом случае используется второй путь?
Я запускаю свой сервлет на сервере приложений websphere. Спасибо
Edit: Вот мой след:
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: я использовать не Oracle-JVM. Я также добавил эти параметры 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
Кто называет DocumentImpl, какую библиотеку вы используете? не зная этих деталей, мы не можем помочь .. боюсь .. – SMA
Я подозреваю, что у вас возникли проблемы с не-Oracle JVM (IBM J9?). Попробуйте установить DocumentBuilderFactory (см. Q14 https://jaxp.java.net/1.4/JAXP-FAQ.html) – artbristol
Да, не Oracle-JVM. Я попытался установить его через: -Djavax.xml.parsers.DocumentBuilderFactory = org.apache.xerces.jaxp.DocumentBuilderFactoryImpl, но этого было недостаточно. – user30137