无法创建类javax.xml.validation.SchemaFactory的提供程序(javax.xml.validation.SchemaFactoryConfigurationError)

时间:2015-03-20 10:02:39

标签: web-services wsdl jax-ws java-8 wsimport

我正在尝试从Java 7迁移到Java 8,用于现有系统,该系统实现了Jax-ws 2.0。构建和部署过程使用Ant任务(apt,wsgen,wsimport)从java带注释的服务端点接口和生成的WSDL准备客户端库生成wsdl和库。它在Java-7之前按预期工作。但是当我尝试使用jdk-8进行构建时,在使用jax-ws库和上面提到的ant任务时遇到了问题。我已经将JAX-WS库升级到JAX-WS RI - 2.2.8和JAX-WS 2.2.10,它在使用ant task wsgen生成WSDL和模式之前一直有效,但是我仍然无法解析客户端库的生成使用wsimport生成的WSDL。我收到了以下错误

javax.xml.validation.SchemaFactoryConfigurationError:无法创建类javax.xml.validation.SchemaFactory的提供程序

我的wsgen和wsimport脚本如下:

<taskdef name="wsgen" classname="com.sun.tools.ws.ant.WsGen">
        <classpath refid="project.classpath"/>
</taskdef>

<wsgen resourcedestdir="${smruti.wsdl.dir}"
        sei="com.smruti.webservice.SmrutiWebService"
        keep="true"
        sourcedestdir="${smruti.wsdl.dir}\src"
        destdir="${build.dir}"
        genwsdl="true">
        <classpath>
            <path refid="project.classpath"/>
            <pathelement location="${build.dir}"/>
        </classpath>
</wsgen> 

<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
            <classpath refid="project.classpath" />
        </taskdef>

<wsimport sourcedestdir="${generated.dir}/src" destdir="${build.dir}" wsdl="${wsdl.location}"  keep="true" extension="true" package="com.smruti.webservice.client"/>

注意:我使用的是jdk 8,ant-1.9.4,jax-ws ri - 2.2.10 libs。

1 个答案:

答案 0 :(得分:1)

作为一种解决方法,我可以通过使用jdk提供wsimport.exe而不是ant任务来解决上述问题。下面是相同的脚本..

<exec executable="C:\Program Files\Java\jdk1.8.0_40\bin\wsimport.exe">
        <arg line="${wsdl.location} -s ${generated.dir}/src -p  com.smruti.webservice.client -d ${build.dir} -extension -keep -Xdebug -verbose" />
</exec>

但是,仍然无法使用wsimport作为java 8和jax-ws-2.2.10的ant任务。