xjc从sun内部包生成代码引用OverrideAnnotationOf注释

时间:2013-01-29 21:29:27

标签: jaxb xjc

我正在尝试从一组XML模式生成Java类。以下绑定文件用于处理模式中的混合内容:

<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings
 xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
 xmlns:xjc= "http://java.sun.com/xml/ns/jaxb/xjc" jaxb:extensionBindingPrefixes="xjc">
  <jaxb:globalBindings generateMixedExtensions="true"/>
</jaxb:bindings>

代码生成工作正常,但其中一个生成的类具有com.sun.xml.internal.bind.annotation包中的@OverrideAnnotationOf。这个包包含在rt.jar中,但是常规的java编译器找不到它(可能不应该找到它,因为它是sun内部的)。

有没有办法处理混合内容,而且在我生成的代码中没有来自sun内部包的OverrideAnnotationOf?

1 个答案:

答案 0 :(得分:2)

在Java 6及更高版本中,oracle将嵌入在JRE中的JAXB实现移动到另一个包中,以防止与外部JAXB reference implementation的潜在冲突。

因此,课程OverrideAnnotationOf已从包com.sun.xml.bind.annotation移至包com.sun.xml.internal.bind.annotation

然而,嵌入式xjc仍会生成使用com.sun.xml.bind.annotation.OverrideAnnotationOf注释的java文件(!)

因此,Java 7附带的JAXB实现将无法理解使用generateMixedExtensions="true"生成的自己的输出。即使您使用-XDignore.symbol.file选项。

相关问题