此問題與this one具有相同的根本原因。有兩種方法來解決這個問題:
設置javax.xml.accessExternalSchema系統屬性:
如果你只在本地建立,您可以加入這一行的jaxp.properties文件命名(如它不存在)下/path/to/jdk1.8.0/jre/lib:
javax.xml.accessExternalSchema=all
,如果你可能會在與他人的項目合作這是行不通的,特別是如果他們仍然使用jdk7。你可以只運行Maven構建在命令行上指定的系統屬性:
$mvn <target and options> -Djavax.xml.accessExternalSchema=all
你也可以使用一個插件來設置系統屬性爲您提供:
<plugin>
<!-- Needed to run the plugin xjc en Java 8 or superior -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<id>set-additional-system-properties</id>
<goals>
<goal>set-system-properties</goal>
</goals>
</execution>
</executions>
<configuration>
<properties>
<property>
<name>javax.xml.accessExternalSchema</name>
<value>all</value>
</property>
<property>
<name>javax.xml.accessExternalDTD</name>
<value>all</value>
</property>
</properties>
</configuration>
</plugin>
您還可以配置maven-jaxb2-plugin
以設置屬性:
<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>
設定目標版本: 如果你不想使用系統屬性,你可以設置maven-jaxb2-plugin
目標2.0版本:
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>${maven.plugin.jaxb2.version}</version>
<configuration>
<args>
<arg>-target</arg>
<arg>2.0</arg>
</args>
</configuration>
</plugin>
你見過[這](HTTP: //stackoverflow.com/questions/23011547/webservice-client-generation-error-with-jdk8)? – Stefan
@Stefan絕對,但是這個問題雖然具有相同的根本原因,但與使用Maven插件生成代碼無關。 –