使用JDK8的WebService客户端生成错误
我需要在我的项目中使用Web服务。 我使用NetBeans,所以我右键单击我的项目并尝试添加一个新的“Web服务客户端”。 我上次检查时,这是创建Web服务客户端的方式。 但它导致了一个AssertionError,它说:
java.lang.AssertionError:org.xml.sax.SAXParseException; systemId:jar:file:/path/to/glassfish/modules/jaxb-osgi.jar!/com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd; lineNumber:52; columnNumber:88; schema_reference:无法读取模式文档' xjc.xsd ',因为由于accessExternalSchema属性设置的限制而不允许'文件'访问。
NetBeans的默认Java平台是JDK8(Oracle的正式版本),所以当我更改netbeans.conf文件并将JDK7(也来自Oracle)作为默认值时,一切正常。 所以我认为问题在于JDK8。 这是我的java -version
输出:
java版本“1.8.0”
Java(TM)SE运行时环境(build 1.8.0-b132)
Java HotSpot(TM)64位服务器虚拟机(构建25.0-b70,混合模式)
目前,我将JDK7作为我的默认Java平台。 如果有办法让JDK8工作,请分享。
那么,我找到了解决方案。 (基于http://docs.oracle.com/javase/7/docs/api/javax/xml/XMLConstants.html#ACCESS_EXTERNAL_SCHEMA)
在/path/to/jdk1.8.0/jre/lib
下创建一个名为jaxp.properties
的文件(如果它不存在),然后在其中写入以下行:
javax.xml.accessExternalSchema = all
就这样。 享受JDK 8。
不是一个实际的答案,而是更多的参考。
如果您使用的是jaxws Maven插件,并且您收到相同的错误消息,请将提及的属性添加到插件配置中:
...
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.3</version>
<configuration>
<!-- Needed with JAXP 1.5 -->
<vmArgs>
<vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
</vmArgs>
</configuration>
</plugin>
我在Eclipse IDE(4.4,Luna,Windows 7 x64)中运行ant构建。 我不想修改已安装的JRE库或任何ant脚本(我的多个项目在其构建中包含XJC),而是更改Eclipse设置“外部工具配置”,并将以下内容添加到Ant构建配置的VM参数中:
-Djavax.xml.accessExternalSchema=all
链接地址: http://www.djcxy.com/p/16339.html