Java “解决JAXB问题”;ObjectFactory类中的名称冲突;定制问题
对执行“xjc”命令返回一个Java “解决JAXB问题”;ObjectFactory类中的名称冲突;定制问题,java,xml,jaxb,Java,Xml,Jaxb,对执行“xjc”命令返回一个两个声明会导致ObjectFactory类中发生冲突,因为有两个元素名为“Scale”和“Scale” 根据,这个问题可以通过使用定制xsd文件来解决 你知道怎么做吗?您有一个绑定文件的例子可以这样做吗?解决问题的一个方法是使用-p选项为每个xsd文件指定单独的包名。您可以使用bindings标记。将schemaLocation属性设置为特定xsd的位置。子标记、schemaBindings和package,然后为该xsd定义一个新的包名称空间。下面是我刚才在xjc中
两个声明会导致ObjectFactory类中发生冲突,因为有两个元素名为“Scale”和“Scale”
根据,这个问题可以通过使用
定制xsd文件来解决
你知道怎么做吗?您有一个绑定文件的例子可以这样做吗?解决问题的一个方法是使用-p选项为每个xsd文件指定单独的包名。您可以使用bindings标记。将schemaLocation属性设置为特定xsd的位置。子标记、schemaBindings和package,然后为该xsd定义一个新的包名称空间。下面是我刚才在xjc中使用的绑定文件。如果它仍然有效,那就太好了。如果不是,示例=)
您是否尝试过-B-XautoNameResolution?它可能并不总是奏效,但最好在编写绑定文件之前试一试。好吧,经过长时间的尝试,下面的配置对我很有效。我使用的是jaxb2 maven插件2.3.1和一个单独的绑定文件:
pom.xml
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>xjc</id>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<target>2.1</target>
<sources>
<source>src/main/xsd</source>
</sources>
<xjbSources>
<xjbSource>src/main/xjb/bindings-1.3.xjb</xjbSource>
</xjbSources>
<arguments>
<argument>-Xfluent-api</argument>
</arguments>
<!-- Package name of the generated sources. -->
<!-- Don't use it, because we've already declared separate package name inside bindings -->
<!-- <packageName>com.abc.xyz.generated</packageName> -->
<outputDirectory>${basedir}/target/generated-sources/classes</outputDirectory>
<clearOutputDir>false</clearOutputDir>
<extension>true</extension>
</configuration>
<dependencies>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-fluent-api</artifactId>
<version>3.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
org.apache.maven.plugins
.谢谢你的回答-不幸的是,B-XautoNameResolution不是一个可识别的xjc参数。我使用的是2.1.10版。它在2.1.10中被称为-XautoNameResolution
,我也遇到了同样的问题。如果你把-B
放在哪里,它就可以正常工作了?我一直在找,文件里没有任何建议。你知道怎么做吗?谢谢你的回答。我现在已经解决了这个问题。这个页面也很有用:很好的回答:上面的链接目前无法解析。回程机器版本如下:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>xjc</id>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<target>2.1</target>
<sources>
<source>src/main/xsd</source>
</sources>
<xjbSources>
<xjbSource>src/main/xjb/bindings-1.3.xjb</xjbSource>
</xjbSources>
<arguments>
<argument>-Xfluent-api</argument>
</arguments>
<!-- Package name of the generated sources. -->
<!-- Don't use it, because we've already declared separate package name inside bindings -->
<!-- <packageName>com.abc.xyz.generated</packageName> -->
<outputDirectory>${basedir}/target/generated-sources/classes</outputDirectory>
<clearOutputDir>false</clearOutputDir>
<extension>true</extension>
</configuration>
<dependencies>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-fluent-api</artifactId>
<version>3.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jxb:bindings schemaLocation="../xsd/ccv1p3_imscp_v1p2_v1p0.xsd"
node="//xs:schema">
<jxb:globalBindings>
<jxb:serializable uid="1" />
<jxb:javaType name="java.util.Calendar" xmlType="xs:dateTime"
parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime"
printMethod="javax.xml.bind.DatatypeConverter.printDateTime" />
</jxb:globalBindings>
<jxb:schemaBindings>
<jxb:package name="com.abc.xyz.generated.manifest" />
</jxb:schemaBindings>
</jxb:bindings>
<jxb:bindings
schemaLocation="http://www.imsglobal.org/profile/cc/ccv1p3/LOM/ccv1p3_lommanifest_v1p0.xsd"
node="//xs:schema">
<jxb:schemaBindings>
<jxb:package name="com.abc.xyz.generated.lommanifest" />
</jxb:schemaBindings>
</jxb:bindings>
<jxb:bindings
schemaLocation="http://www.imsglobal.org/profile/cc/ccv1p3/LOM/ccv1p3_lomresource_v1p0.xsd"
node="//xs:schema">
<jxb:schemaBindings>
<jxb:package name="com.lcs.thincc.generated.lomresource" />
</jxb:schemaBindings>
</jxb:bindings>