How to start jax-ws web service from ant java task in command line

Hi I am trying to start simple jax-ws webservices with soap / wsdl from Ant. The program works fine if I run it from the command line using simple "java". ant explodes. I am using JDK jdk1.6.0.26 32 bit on Windows 7 32 bit operating system. My ant is 1.7.1.

Here is the build file

    <?xml version="1.0"?>
<project name="WebSvcUpAndRunning" default="run" >
<description>Compiles and runs a simple program</description>

    <property name="project.name"       value="${ant.project.name}" />
    <property name="project.version"    value="1.0" />
    <property name="main.class"     value="ch01.ts.TimeServerPublisher" />
    <property name="build.dir"      location="." />
    <property name="dist.dir"       location="${build.dir}/dist" />
    <property name="target.name"    value="${project.name}-${project.version}.jar" />
    <property name="target.jar"     location="${dist.dir}/${target.name}" />
    <property name="src.dir" location="${build.dir}/src" />
    <property name="build.classes.dir" location="${build.dir}/classes" />

    <target name="init">
        <mkdir dir="${build.classes.dir}" />
        <mkdir dir="${dist.dir}" />
    </target>

    <path id="compile.classpath">
        <fileset dir="lib">
            <include name="*.jar" />
        </fileset>
        <fileset dir="C:\jdks\jdk1.6.0_26\jre\lib">
            <include name="*.jar" />
        </fileset>
    </path>

    <target name="compile" depends="init" description="Compiles the source code">
        <javac 
                destdir="${build.classes.dir}"
                debug="true"
                srcdir="${src.dir}">
            <classpath refid="compile.classpath" />
        </javac>
    </target>

    <target name="clean" depends="init"
        description="Removes the temporary directories used">
        <delete dir="${build.classes.dir}" />
        <delete dir="${dist.dir}" />
    </target>

    <target name="run" depends="compile" description="Runs the program">
        <echo level="warning" message="running" />
        <java
            classname="${main.class}">
            <classpath>
                <path refid="compile.classpath" />
                <pathelement location="${build.classes.dir}" />
            </classpath>
        </java>
    </target>

    <target name="jar"  depends="compile" description="Creates the JAR file">
        <property name="manifest.mf"    location="${src.dir}/META-INF/manifest.mf" />
        <manifest file="${manifest.mf}" >
            <attribute name="Built-By" value="${user.name}"/>
            <attribute name="Sealed" value="true"/>
            <attribute name="Main-Class" value="${main.class}"/>
        </manifest>
        <jar destfile="${target.jar}"
                duplicate="preserve"
                manifest="${manifest.mf}">
            <fileset dir="${build.classes.dir}"/>
        </jar>
    </target>

    <path id="run.jar.classpath">
        <path refid="compile.classpath"/>
        <pathelement location="${target.jar}"/>
    </path> 

    <!-- Run Java using executable Jar -->
    <target name="run-jar" depends="jar" description="Runs the program">
        <echo level="warning" message="running" />
        <java
            classname="${main.class}"
            classpathref="run.jar.classpath">
        </java>
    </target>

</project>

      

... and here is the error code I am getting.

    [java] java.lang.Error: javax.xml.datatype.DatatypeConfigurationException: Provider org.apache.xerces.jaxp
.datatype.DatatypeFactoryImpl not found
     [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:194)
     [java]     at org.apache.tools.ant.taskdefs.Java.run(Java.java:764)
     [java]     at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:218)
     [java]     at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:132)
     [java]     at org.apache.tools.ant.taskdefs.Java.execute(Java.java:105)
     [java]     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
     [java]     at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
     [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     [java]     at java.lang.reflect.Method.invoke(Method.java:597)
     [java]     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
     [java]     at org.apache.tools.ant.Task.perform(Task.java:348)
     [java]     at org.apache.tools.ant.Target.execute(Target.java:357)
     [java]     at org.apache.tools.ant.Target.performTasks(Target.java:385)
     [java]     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
     [java]     at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
     [java]     at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
     [java]     at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
     [java]     at org.apache.tools.ant.Main.runBuild(Main.java:758)
     [java]     at org.apache.tools.ant.Main.startAnt(Main.java:217)
     [java]     at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
     [java]     at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
     [java] Caused by: java.lang.Error: javax.xml.datatype.DatatypeConfigurationException: Provider org.apache.
xerces.jaxp.datatype.DatatypeFactoryImpl not found
     [java]     at com.sun.xml.internal.bind.DatatypeConverterImpl.<clinit>(DatatypeConverterImpl.java:775)
     [java]     at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$3.run(JAXBContextImpl.java:262)
     [java]     at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$3.run(JAXBContextImpl.java:260)
     [java]     at java.security.AccessController.doPrivileged(Native Method)
     [java]     at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:260)
     [java]     at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImp
l.java:1100)
     [java]     at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:143)
     [java]     at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:110)
     [java]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [java]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     [java]     at java.lang.reflect.Method.invoke(Method.java:597)
     [java]     at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:202)
     [java]     at javax.xml.bind.ContextFinder.find(ContextFinder.java:376)
     [java]     at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
     [java]     at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522)
     [java]     at com.sun.xml.internal.ws.spi.ProviderImpl$2.run(ProviderImpl.java:209)
     [java]     at com.sun.xml.internal.ws.spi.ProviderImpl$2.run(ProviderImpl.java:206)
     [java]     at java.security.AccessController.doPrivileged(Native Method)
     [java]     at com.sun.xml.internal.ws.spi.ProviderImpl.getEPRJaxbContext(ProviderImpl.java:206)
     [java]     at com.sun.xml.internal.ws.spi.ProviderImpl.<clinit>(ProviderImpl.java:77)
     [java]     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     [java]     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

     [java]     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.
java:27)
     [java]     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
     [java]     at java.lang.Class.newInstance0(Class.java:355)
     [java]     at java.lang.Class.newInstance(Class.java:308)
     [java]     at javax.xml.ws.spi.FactoryFinder.newInstance(FactoryFinder.java:31)
     [java]     at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:128)
     [java]     at javax.xml.ws.spi.Provider.provider(Provider.java:83)
     [java]     at javax.xml.ws.Endpoint.publish(Endpoint.java:170)
     [java]     at ch01.ts.TimeServerPublisher.main(TimeServerPublisher.java:8)
     [java]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [java]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     [java]     at java.lang.reflect.Method.invoke(Method.java:597)
     [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:217)
     [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:152)
     [java]     ... 20 more
     [java] Caused by: javax.xml.datatype.DatatypeConfigurationException: Provider org.apache.xerces.jaxp.datat
ype.DatatypeFactoryImpl not found
     [java]     at javax.xml.datatype.DatatypeFactory.newInstance(DatatypeFactory.java:137)
     [java]     at com.sun.xml.internal.bind.DatatypeConverterImpl.<clinit>(DatatypeConverterImpl.java:773)
     [java]     ... 57 more
     [java] Caused by: java.lang.ClassNotFoundException: org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl
     [java]     at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1400)
     [java]     at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1341)
     [java]     at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1094)
     [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
     [java]     at javax.xml.datatype.FactoryFinder.getProviderClass(FactoryFinder.java:115)
     [java]     at javax.xml.datatype.FactoryFinder.newInstance(FactoryFinder.java:146)
     [java]     at javax.xml.datatype.FactoryFinder.findJarServiceProvider(FactoryFinder.java:298)
     [java]     at javax.xml.datatype.FactoryFinder.find(FactoryFinder.java:223)
     [java]     at javax.xml.datatype.DatatypeFactory.newInstance(DatatypeFactory.java:131)
     [java]     ... 58 more
     [java] --- Nested Exception ---
     [java] java.lang.Error: javax.xml.datatype.DatatypeConfigurationException: Provider org.apache.xerces.jaxp
.datatype.DatatypeFactoryImpl not found
     [java]     at com.sun.xml.internal.bind.DatatypeConverterImpl.<clinit>(DatatypeConverterImpl.java:775)
     [java]     at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$3.run(JAXBContextImpl.java:262)
     [java]     at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$3.run(JAXBContextImpl.java:260)
     [java]     at java.security.AccessController.doPrivileged(Native Method)
     [java]     at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:260)
     [java]     at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImp
l.java:1100)
     [java]     at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:143)
     [java]     at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:110)
     [java]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [java]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     [java]     at java.lang.reflect.Method.invoke(Method.java:597)
     [java]     at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:202)
     [java]     at javax.xml.bind.ContextFinder.find(ContextFinder.java:376)
     [java]     at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
     [java]     at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522)
     [java]     at com.sun.xml.internal.ws.spi.ProviderImpl$2.run(ProviderImpl.java:209)
     [java]     at com.sun.xml.internal.ws.spi.ProviderImpl$2.run(ProviderImpl.java:206)
     [java]     at java.security.AccessController.doPrivileged(Native Method)
     [java]     at com.sun.xml.internal.ws.spi.ProviderImpl.getEPRJaxbContext(ProviderImpl.java:206)
     [java]     at com.sun.xml.internal.ws.spi.ProviderImpl.<clinit>(ProviderImpl.java:77)
     [java]     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     [java]     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

     [java]     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.
java:27)
     [java]     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
     [java]     at java.lang.Class.newInstance0(Class.java:355)
     [java]     at java.lang.Class.newInstance(Class.java:308)
     [java]     at javax.xml.ws.spi.FactoryFinder.newInstance(FactoryFinder.java:31)
     [java]     at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:128)
     [java]     at javax.xml.ws.spi.Provider.provider(Provider.java:83)
     [java]     at javax.xml.ws.Endpoint.publish(Endpoint.java:170)
     [java]     at ch01.ts.TimeServerPublisher.main(TimeServerPublisher.java:8)
     [java]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [java]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     [java]     at java.lang.reflect.Method.invoke(Method.java:597)
     [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:217)
     [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:152)
     [java]     at org.apache.tools.ant.taskdefs.Java.run(Java.java:764)
     [java]     at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:218)
     [java]     at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:132)
     [java]     at org.apache.tools.ant.taskdefs.Java.execute(Java.java:105)
     [java]     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
     [java]     at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
     [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     [java]     at java.lang.reflect.Method.invoke(Method.java:597)
     [java]     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
     [java]     at org.apache.tools.ant.Task.perform(Task.java:348)
     [java]     at org.apache.tools.ant.Target.execute(Target.java:357)
     [java]     at org.apache.tools.ant.Target.performTasks(Target.java:385)
     [java]     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
     [java]     at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
     [java]     at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
     [java]     at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
     [java]     at org.apache.tools.ant.Main.runBuild(Main.java:758)
     [java]     at org.apache.tools.ant.Main.startAnt(Main.java:217)
     [java]     at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
     [java]     at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
     [java] Caused by: javax.xml.datatype.DatatypeConfigurationException: Provider org.apache.xerces.jaxp.datat
ype.DatatypeFactoryImpl not found
     [java]     at javax.xml.datatype.DatatypeFactory.newInstance(DatatypeFactory.java:137)
     [java]     at com.sun.xml.internal.bind.DatatypeConverterImpl.<clinit>(DatatypeConverterImpl.java:773)
     [java]     ... 57 more
     [java] Caused by: java.lang.ClassNotFoundException: org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl
     [java]     at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1400)
     [java]     at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1341)
     [java]     at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1094)
     [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
     [java]     at javax.xml.datatype.FactoryFinder.getProviderClass(FactoryFinder.java:115)
     [java]     at javax.xml.datatype.FactoryFinder.newInstance(FactoryFinder.java:146)
     [java]     at javax.xml.datatype.FactoryFinder.findJarServiceProvider(FactoryFinder.java:298)
     [java]     at javax.xml.datatype.FactoryFinder.find(FactoryFinder.java:223)
     [java]     at javax.xml.datatype.DatatypeFactory.newInstance(DatatypeFactory.java:131)
     [java]     ... 58 more
     [java] Java Result: -1

      

+3


source to share


1 answer


org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl

is not in your classpath. Java 6 jvm includes Xerces implementation embedded in rt.jar, but the package names are different - these are: com.sun.org.apache.xerces.internal.jaxp.datatype

You can either modify the expected DatatypeFactoryImpl in your code, or override the Xerces implementation by adding a separate jar of Xerces to your classpath. To override the classes used by jvm, you can add any version of xerces.jar to the JVm / lib / endored directory.



For more details see http://xml.apache.org/xalan-j/faq.html#faq-N100EF and xerces serialization in Java 6

+1


source







All Articles