[英]xjc fails to generate classes when using bindings
这曾经适用于所有以前版本的 JAXB。 我已经升级到 JAXB 的 2.2.7 版,现在xjc
抛出以下内容:
java.lang.AssertionError: javax.xml.bind.JAXBException - 有链接异常:[com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
com.sun.xml.bind.api.impl.NameConverter 是一个接口,JAXB 不能处理接口。 此问题与以下位置有关:在 com.sun.xml.bind.api.impl.NameConverter 在公共 com.sun.xml.bind.api.impl.NameConverter com.sun.tools.xjc.reader.xmlschema。 bindinfo.BIGlobalBinding.nameConverter at com.sun.tools.xjc.reader.xmlschema.bindinfo.BIGlobalBinding]
从 jaxb 2.2.7 开始,他们将 jaxb 库拆分为几个组件。 xjc 现在与任何特定的 jaxb 运行时分离。 要解决此问题,请确保在执行 xjc 时在类路径上提供 jaxb 运行时。 详细信息可以在他们的发行说明中找到: https : //jaxb.java.net/nonav/2.2.7/docs/release-documentation.html#a-2-2-7
参考实现可以在 maven central 上找到,坐标如下:com.sun.xml.bind:jaxb-impl:2.2.7
由于整个 JAXB 项目现在从https://github.com/javaee/jaxb-v2移动到https://github.com/eclipse-ee4j/jaxb-ri包括 Maven 依赖项,我更新了我的pom.xml
从
<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-core</artifactId>
<version>${jaxb.version}</version>
</dependency>
到
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-xjc</artifactId>
<version>${jaxb-xjc.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-core</artifactId>
<version>${jaxb.version}</version>
</dependency>
这至少帮助我解决了类似的问题。
假设您使用的是 Eclipse 或衍生产品(websphere studio、jDeveloper、Spring Tools Suite 等)。 如果没有,您可以使用 JDK 'xjc' 命令行工具,否则使用Maven 插件 JAXB2 )
您必须为项目显式配置 JAXB(不同的项目可能具有不同的配置以使事情变得简单!)
在最近的 Eclipse 版本 (4.4+) 中,请遵循以下步骤:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.