gpt4 book ai didi

java - 如何在命令行上从 ant java 任务运行 jax-ws web 服务

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:10:19 25 4
gpt4 key购买 nike

您好,我正在尝试从 Ant 运行一个简单的基于 jax-ws soap/wsdl 的 Web 服务。如果我使用纯“java”从命令行运行程序,程序运行良好。 Ant 爆炸了。我在 Windows 7 32 位操作系统上使用 JDK jdk1.6.0.26 32 位。我的 Ant 是 1.7.1。

这是构建文件

    <?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>

...这是我收到的错误代码..

    [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

最佳答案

org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl 不在您的类路径中。 java 6 jvm 确实包含一个嵌入在 rt.jar 中的 Xerces 实现,但包名称不同 - 它是:com.sun.org.apache.xerces.internal.jaxp.datatype

您可以在代码中更改预期的 DatatypeFactoryImpl 或通过将单独的 Xerces jar 添加到类路径来覆盖 Xerces 实现。要覆盖 jvm 使用的类,您可以将任何版本的 xerces.jar 添加到 JVm 安装/lib/endorsed 目录。

http://xml.apache.org/xalan-j/faq.html#faq-N100EF 上有更多详细信息和 xerces serialization in Java 6

关于java - 如何在命令行上从 ant java 任务运行 jax-ws web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14606350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com