这曾经用于所有以前版本的jaxb,我已经升级到jaxb的2.2.7版本,现在xjc引发了以下内容:
java.lang.AssertionError:javax.xml.bind.JAXBException - 链接异常: [com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException:IllegalAnnotationExceptions的1个计数 com.sun.xml.bind.api.impl.NameConverter是一个接口,JAXB无法处理接口。 此问题与以下位置有关: 在com.sun.xml.bind.api.impl.NameConverter at public com.sun.xml.bind.api.impl.NameConverter com.sun.tools.xjc.reader.xmlschema.bindinfo.BIGlobalBinding.nameConverter 在com.sun.tools.xjc.reader.xmlschema.bindinfo.BIGlobalBinding ]
答案 0 :(得分:4)
从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
答案 1 :(得分:0)
假设您使用的是Eclipse或衍生产品(websphere studio,jDeveloper,Spring Tools Suite,...)。如果没有,您可以使用JDK 'xjc' command line tool,否则使用Maven Plug-in JAXB2)
您必须为项目显式配置JAXB(不同的项目可能具有不同的配置以简化操作!)
在最近的Eclipse版本(4.4+)中,请按照以下步骤操作:
答案 2 :(得分:0)
随着整个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>
这至少在类似问题上对我有帮助。