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