我需要在项目中使用web服务。我使用NetBeans,所以我右键单击我的项目,并尝试添加一个新的“Web服务客户端”。上次我检查时,这是创建web服务客户机的方法。但它导致了一个AssertionError,说:

java.lang.AssertionError: org.xml.sax.SAXParseException;systemId: jar文件:/道路/ / glassfish /模块/ jaxb-osgi.jar ! / com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd;lineNumber: 52个;columnNumber: 88;schema_reference:读取架构文档'xjc失败。由于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位服务器虚拟机(build 25.0-b70,混合模式)

目前,我将JDK7作为默认的Java平台。如果有让JDK8工作的方法,请分享。


当前回答

它现在在2.5版本(发布于17年7月)中得到了修复。https://github.com/mojohaus/jaxws-maven-plugin/issues/8。

对于2.4。X版本有一个解决方案(描述在https://github.com/mojohaus/jaxws-maven-plugin/issues/4):

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jaxws-maven-plugin</artifactId>
        <version>2.4.1</version>
        <dependencies>
            <dependency>
                <groupId>com.sun.xml.ws</groupId>
                <artifactId>jaxws-tools</artifactId>
                <version>2.2.10</version>
            </dependency>
        </dependencies>
    </plugin>

其他回答

不是一个实际的答案,更多的是作为一个参考。

如果您正在使用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)中运行蚂蚁构建。与其修改已安装的JRE库或任何ant脚本(我有多个项目,它们的构建中包含XJC),我更喜欢更改Eclipse设置“外部工具配置”,并将以下内容添加到ant构建配置的VM参数中:

-Djavax.xml.accessExternalSchema=all

如果您正在使用Intellij IDEA,请在maven工具窗口中

选择Maven Settings,展开Maven下拉菜单,选择Runner。

在VM选项下添加-Djavax.xml.accessExternalSchema=all

我刚刚尝试过,如果您使用SoapUI (5.4.x)并使用Apache CXF工具生成java代码,请将javax.xml.accessExternalSchema = all放在YOUR_JDK/jre/lib/jaxp中。属性文件也可以工作。

在IntelliJ IDE中使用Maven时,可以添加-Djavax.xml。accessExternalSchema=所有Maven设置下的JVM选项Maven构建工具运行器配置