Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jdk8和maven-jaxb2-plugin的SAXParseException_Java_Maven_Xsd - Fatal编程技术网

Java jdk8和maven-jaxb2-plugin的SAXParseException

Java jdk8和maven-jaxb2-plugin的SAXParseException,java,maven,xsd,Java,Maven,Xsd,如果您使用类似于org.jvnet.jaxb2.maven2:maven-jaxb2-plugin的插件来解析xsd文件,那么从jdk7升级到jdk8时会遇到此异常: org.xml.sax.SAXParseException;systemId:file:/D:/Work/my/schema.xsd;行号:27 ;;栏目号:133;架构\ U引用:未能读取架构文档“CoreComponentsTechnicalSpecification-1p0.xsd”,因为由于accessExternalSc

如果您使用类似于
org.jvnet.jaxb2.maven2:maven-jaxb2-plugin
的插件来解析xsd文件,那么从jdk7升级到jdk8时会遇到此异常:

org.xml.sax.SAXParseException;systemId:file:/D:/Work/my/schema.xsd;行号:27 ;;栏目号:133;架构\ U引用:未能读取架构文档“CoreComponentsTechnicalSpecification-1p0.xsd”,因为由于accessExternalSchema属性设置的限制,不允许访问“文件”。


如何使这个插件与jdk8一起工作?

这个问题的根本原因与jdk8相同。有两种方法可以解决此问题:

设置javax.xml.accessExternalSchema系统属性:

如果您仅在本地构建,则可以将此行添加到/path/to/jdk1.8.0/jre/lib下名为jaxp.properties(如果不存在)的文件中:

javax.xml.accessExternalSchema=all

如果您可能正在与其他人一起处理项目,尤其是在他们仍在使用jdk7的情况下,这将不起作用。您可以使用命令行上指定的系统属性运行maven构建:

$mvn <target and options> -Djavax.xml.accessExternalSchema=all

设置目标版本: 如果不想使用系统属性,可以将
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>

org.jvnet.jaxb2.maven2
maven-jaxb2-plugin
${maven.plugin.jaxb2.version}
-目标
2

使用2.4版本的插件:

<externalEntityProcessing>true</externalEntityProcessing>
true

你看到了吗?@Stefan当然看到了,但是这个问题虽然有相同的根本原因,但与maven插件的代码生成无关。嗨,Niel,我使用的是JRE1.8.0_111,我找不到文件jaxp.properties。知道吗?不知道,抱歉@AyadiAkremproperties maven插件与1.6版本的jaxb2 maven插件配合使用
<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>
<externalEntityProcessing>true</externalEntityProcessing>