users@jax-ws.java.net

Re: Please help java.lang.NoClassDefFoundError: com.sun.org.apache.xerces.internal.dom.DocumentImpl

From: Dmitry Katsubo <dma_k_at_mail.ru>
Date: Mon, 12 Dec 2011 12:01:56 +0100

Hi Jon,

It is good that you've found the truth yourself.

Indeed, SAAJ implementation from Sun uses Sun JDK internals (perhaps you
can find this in the description).

What you can do is:

* Add com.sun.xml.parsers:jaxp-ri:1.4.2 to classpath to fix the missing
dependency (check also http://stackoverflow.com/questions/1578041).
* Use SAAJ implementation from JBoss's WS stack (jbossws-client.jar) or
any other stack (axis2-saaj-1.5.jar, openejb-webservices-3.1.1.jar)
(check
http://static.springsource.org/spring-ws/sites/2.0/faq.html#saaj-versions).

On 12.12.2011 3:11, Jon Blanton wrote:
> Source for SOAPDocumentImpl
> (http://java.net/projects/saaj/sources/svn/show/branches?rev=395) indeed
> imports com.sun.org.apache.xerces.internal.dom.DocumentImpl; !! I am a
> bit baffled now. Does this mean I cannot use jax-ws.java.net/2.2.5 with
> IBM JDK because it's xerces is under org.apache.xerces and not under
> com.sun.org.apache.xerces?
>
>
> import com.sun.org.apache.xerces.internal.dom.DocumentImpl;
> public class SOAPDocumentImpl extends DocumentImpl implements SOAPDocument {
>
>
> ------------------------------------------------------------------------
> From: dcx20_at_live.com
> To: issues_at_jax-ws.java.net; users_at_jax-ws.java.net
> Subject: Please help java.lang.NoClassDefFoundError:
> com.sun.org.apache.xerces.internal.dom.DocumentImpl
> Date: Sat, 10 Dec 2011 23:49:46 -0800
>
>
> Please help me with the following exception. The example works fine with
> Sun JDK 1.5, but not with IBM JDK. soapTest.zip
>
> All libraries are downloaded from http://jax-ws.java.net/2.2.5/
>
> Attachment 1: soapTest.zip Example that works on Sun jdk.
> windowsOut.log file contains version, jvm properties, and correctly read
> SOAP message.
> Attachment 2: soapTest_ibmJdk.zip The same example fails on IBM JDK.
> out.txt contains the stacktrace. provides version and jvm properties.
> 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:267)
> at
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
> at java.net.URLClassLoader.defineClass(URLClassLoader.java:600)
> at java.net.URLClassLoader.access$400(URLClassLoader.java:124)
> at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:1055)
> at
> java.security.AccessController.doPrivileged(AccessController.java:274)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:492)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:650)
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:616)
> at
> com.sun.xml.messaging.saaj.soap.SOAPPartImpl.<init>(SOAPPartImpl.java:106)
> at
> com.sun.xml.messaging.saaj.soap.ver1_1.Message1_1Impl.getSOAPPart(Message1_1Impl.java:90)
> at
> com.sun.xml.messaging.saaj.soap.MessageImpl.init(MessageImpl.java:407)
> at
> com.sun.xml.messaging.saaj.soap.MessageImpl.<init>(MessageImpl.java:316)
> at
> com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl.createMessage(SOAPMessageFactory1_1Impl.java:74)
> at soapTest.TestSaaj.main(TestSaaj.java:59)
>
> As you can see, org.apache classes are used by the IBM JDK by default,
> but com.sun.xml.messaging.saaj.soap.MessageImpl tries to access
> com.sun.org.apache.xerces.internal.dom.DocumentImpl. I can't figure out
> why. Am I missing some setting somewhere? Please help.
>
> DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
> DocumentBuilder=org.apache.xerces.jaxp.DocumentBuilderImpl
> Documentr=org.apache.xerces.dom.DocumentImpl
> SoapMessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl
> Caused by: java.lang.NoClassDefFoundError:
> com.sun.org.apache.xerces.internal.dom.DocumentImpl
>
> Thanks
> Jon

-- 
With best regards,
Dmitry