Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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 如何更新JDK中使用的JAXB RI版本?_Java_Java 8_Jaxb_Java 7_Jaxb2 - Fatal编程技术网

Java 如何更新JDK中使用的JAXB RI版本?

Java 如何更新JDK中使用的JAXB RI版本?,java,java-8,jaxb,java-7,jaxb2,Java,Java 8,Jaxb,Java 7,Jaxb2,当我用JDK 8编译XSD时,我得到了预期的输出 当我用JDK 7编译XSD时,它似乎没有读取binding.xjb文件 我很确定这是jaxb-v2之间修复的众多缺陷之一 JDK7第一版JAXB RI 2.2.4-1 JDK8第一版JAXB RI 2.2.8 发行说明: 如果可能的话,有人能帮我解决如何更新JDK使用的JAXB RI版本吗 我正在使用Maven进行构建,并且正在使用 <dependency> <groupId>org.jvnet.jaxb2

当我用JDK 8编译XSD时,我得到了预期的输出

当我用JDK 7编译XSD时,它似乎没有读取binding.xjb文件

我很确定这是jaxb-v2之间修复的众多缺陷之一

  • JDK7第一版JAXB RI 2.2.4-1

  • JDK8第一版JAXB RI 2.2.8

发行说明:

如果可能的话,有人能帮我解决如何更新JDK使用的JAXB RI版本吗

我正在使用Maven进行构建,并且正在使用

  <dependency>
    <groupId>org.jvnet.jaxb2_commons</groupId>
    <artifactId>jaxb2-basics-runtime</artifactId>
    <version>0.6.4</version>
  </dependency>

org.jvnet.jaxb2_commons

我们还可以看到生成的java类有不同的类型。

此外,它在JDK 8中生成适配器类,但在JDK 7中不生成。 几点建议:

  • 参数在两个位置定义。一个在
    /plugin/executions/execution/configuration/args
    下,另一个在
    /plugin/configuration/args
    下。您可以在
    /plugin/configuration/args
    中使用它
  • 在/plugin/configuration下,有两个属性schemaDirectorybindingDirectory。在上面的插件使用中,我们看不到XSD和xjbs都位于resources目录中吗
  • 您是否也可以尝试设置这些参数: 强制重新生成=true和CleanPackageDirectory=false
  • 仅提及一个示例插件定义供参考,您可以修剪不需要的细节

    <plugin>
        <groupId>org.jvnet.jaxb2.maven2</groupId>
        <artifactId>maven-jaxb2-plugin</artifactId>
        <version>0.8.3</version>
        <configuration>
            <generatePackage>com.some.sample.package</generatePackage>
            <schemaDirectory>src/main/resources/xsd</schemaDirectory>
            <bindingDirectory>src/main/resources/xjb</bindingDirectory>
            <generateDirectory>${project.build.directory}/generated-sources</generateDirectory>
            <extension>true</extension>
            <args>
                <arg>-no-header</arg>
                <arg>-Xxew</arg>
                <arg>-Xxew:instantiate lazy</arg>
                <arg>-Xxew:delete</arg>
                <arg>-XtoString</arg>
                <arg>-Xequals</arg>
                <arg>-XhashCode</arg>
                <arg>-Xvalue-constructor</arg>
                <arg>-Xfluent-api</arg>
                <arg>-Xannotate</arg>
            </args>
            <plugins>
                <plugin>
                    <groupId>org.jvnet.jaxb2_commons</groupId>
                    <artifactId>jaxb2-basics</artifactId>
                    <version>${jaxb2.basics.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.jvnet.jaxb2_commons</groupId>
                    <artifactId>jaxb2-fluent-api</artifactId>
                    <version>${jaxb2.fluentapi.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.jvnet.jaxb2_commons</groupId>
                    <artifactId>jaxb2-value-constructor</artifactId>
                    <version>${jaxb2.value.constructor.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.jvnet.jaxb2_commons</groupId>
                    <artifactId>jaxb2-basics-annotate</artifactId>
                    <version>${jaxb2.basics.annotate.version}</version>
                </plugin>
            </plugins>
        </configuration>
        <executions>
            <execution>
                <id>abc.xsd</id>
                <goals>
                    <goal>generate</goal>
                </goals>
                <configuration>
                    <schemaIncludes>
                        <include>abc.xsd</include>
                    </schemaIncludes>
                    <bindingIncludes>
                        <include>abc.binding.xml</include>
                    </bindingIncludes>
                    <generatePackage>com.some.sample.package.transfer</generatePackage>
                    <removeOldOutput>false</removeOldOutput>
                    <forceRegenerate>true</forceRegenerate>
                    <cleanPackageDirectories>false</cleanPackageDirectories>
                </configuration>
            </execution>
        </executions>
        <dependencies>
            <dependency>
                <groupId>com.github.jaxb-xew-plugin</groupId>
                <artifactId>jaxb-xew-plugin</artifactId>
                <version>${jaxb.xew.plugin.version}</version>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-xjc</artifactId>
                <version>${jaxb.xjc.version}</version>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-osgi</artifactId>
                <version>${jaxb.xjc.version}</version>
            </dependency>
        </dependencies>
    </plugin>
    
    
    <jaxb2.basics.version>0.9.2</jaxb2.basics.version>
    <jaxb.xew.plugin.version>1.1</jaxb.xew.plugin.version>
    <jaxb.xjc.version>2.2.6</jaxb.xjc.version>
    <jaxb2.fluentapi.version>3.0</jaxb2.fluentapi.version>
    <jaxb2.value.constructor.version>3.0</jaxb2.value.constructor.version>
    <javax.xml.bind.version>2.2.6</javax.xml.bind.version>
    <jaxb2.basics.annotate.version>1.0.4</jaxb2.basics.annotate.version>
    
    
    org.jvnet.jaxb2.maven2
    maven-jaxb2-plugin
    0.8.3
    com.some.sample.package
    src/main/resources/xsd
    src/main/resources/xjb
    ${project.build.directory}/生成的源
    真的
    -无标题
    -Xxew
    -Xxew:实例化lazy
    -Xxew:删除
    -XtoString
    -Xequals
    -XhashCode
    -Xvalue构造函数
    -Xfluent api
    -山奈特
    org.jvnet.jaxb2_commons
    jaxb2基础知识
    ${jaxb2.basics.version}
    org.jvnet.jaxb2_commons
    jaxb2 fluent api
    ${jaxb2.fluentapi.version}
    org.jvnet.jaxb2_commons
    jaxb2值构造函数
    ${jaxb2.value.constructor.version}
    org.jvnet.jaxb2_commons
    jaxb2基础注释
    ${jaxb2.basics.annotate.version}
    abc.xsd
    生成
    abc.xsd
    abc.binding.xml
    com.some.sample.package.transfer
    假的
    真的
    假的
    com.github.jaxb-xew-plugin
    jaxbxew插件
    ${jaxb.xew.plugin.version}
    com.sun.xml.bind
    jaxbxjc
    ${jaxb.xjc.version}
    com.sun.xml.bind
    jaxb osgi
    ${jaxb.xjc.version}
    0.9.2
    1.1
    2.2.6
    3
    3
    2.2.6
    1.0.4
    
    谢谢,但这些都无助于JAXB在JDK 7下找不到绑定文件。您能否分享最小的项目结构、maven日志和pom部分以进一步了解。
    0.8.3
    是非常旧的版本。
    0.6.4
    是JAXB2基础的非常旧的版本。只是说说而已。请在这里提交一个带有示例项目的PR:在j/jdk7下。JAXB版本之间存在差异,但通常使用与之捆绑的特定版本。由于JDK版本的差异是。。。令人惊讶的是,我愿意看一看。免责声明:我是
    maven-jaxb2-plugin
    和jaxb2基础的作者。顺便问一下,你确定这与jdk9无关吗?我在JDK 9上没有处理绑定时遇到问题。这在的
    0.14.0
    版本中是固定的。
    <plugin>
        <groupId>org.jvnet.jaxb2.maven2</groupId>
        <artifactId>maven-jaxb2-plugin</artifactId>
        <version>0.8.3</version>
        <configuration>
            <generatePackage>com.some.sample.package</generatePackage>
            <schemaDirectory>src/main/resources/xsd</schemaDirectory>
            <bindingDirectory>src/main/resources/xjb</bindingDirectory>
            <generateDirectory>${project.build.directory}/generated-sources</generateDirectory>
            <extension>true</extension>
            <args>
                <arg>-no-header</arg>
                <arg>-Xxew</arg>
                <arg>-Xxew:instantiate lazy</arg>
                <arg>-Xxew:delete</arg>
                <arg>-XtoString</arg>
                <arg>-Xequals</arg>
                <arg>-XhashCode</arg>
                <arg>-Xvalue-constructor</arg>
                <arg>-Xfluent-api</arg>
                <arg>-Xannotate</arg>
            </args>
            <plugins>
                <plugin>
                    <groupId>org.jvnet.jaxb2_commons</groupId>
                    <artifactId>jaxb2-basics</artifactId>
                    <version>${jaxb2.basics.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.jvnet.jaxb2_commons</groupId>
                    <artifactId>jaxb2-fluent-api</artifactId>
                    <version>${jaxb2.fluentapi.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.jvnet.jaxb2_commons</groupId>
                    <artifactId>jaxb2-value-constructor</artifactId>
                    <version>${jaxb2.value.constructor.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.jvnet.jaxb2_commons</groupId>
                    <artifactId>jaxb2-basics-annotate</artifactId>
                    <version>${jaxb2.basics.annotate.version}</version>
                </plugin>
            </plugins>
        </configuration>
        <executions>
            <execution>
                <id>abc.xsd</id>
                <goals>
                    <goal>generate</goal>
                </goals>
                <configuration>
                    <schemaIncludes>
                        <include>abc.xsd</include>
                    </schemaIncludes>
                    <bindingIncludes>
                        <include>abc.binding.xml</include>
                    </bindingIncludes>
                    <generatePackage>com.some.sample.package.transfer</generatePackage>
                    <removeOldOutput>false</removeOldOutput>
                    <forceRegenerate>true</forceRegenerate>
                    <cleanPackageDirectories>false</cleanPackageDirectories>
                </configuration>
            </execution>
        </executions>
        <dependencies>
            <dependency>
                <groupId>com.github.jaxb-xew-plugin</groupId>
                <artifactId>jaxb-xew-plugin</artifactId>
                <version>${jaxb.xew.plugin.version}</version>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-xjc</artifactId>
                <version>${jaxb.xjc.version}</version>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-osgi</artifactId>
                <version>${jaxb.xjc.version}</version>
            </dependency>
        </dependencies>
    </plugin>
    
    
    <jaxb2.basics.version>0.9.2</jaxb2.basics.version>
    <jaxb.xew.plugin.version>1.1</jaxb.xew.plugin.version>
    <jaxb.xjc.version>2.2.6</jaxb.xjc.version>
    <jaxb2.fluentapi.version>3.0</jaxb2.fluentapi.version>
    <jaxb2.value.constructor.version>3.0</jaxb2.value.constructor.version>
    <javax.xml.bind.version>2.2.6</javax.xml.bind.version>
    <jaxb2.basics.annotate.version>1.0.4</jaxb2.basics.annotate.version>