什么可能导致“JAXBElement没有no-arg默认构造函数”?

时间:2013-10-28 18:51:29

标签: java xml jaxb xsd xjc

我正在生成一个将被放入商业软件产品中的jar。该jar符合商业软件的api,并依赖于第二个jar,其中包含(除其他外)从XSD生成的一组POJO。但是,当我将它放入时,尝试实例化JAXBContext时失败了。

我明白了:

"1 counts of IllegalAnnotationExceptions"
javax.xml.bind.JAXBElement does not have a no-arg default constructor.
  this problem is related to the following location: 
    at javax.xml.bind.JAXBElement
    at mypackage.MyClass
    ...
    JAXBContext.newInstance("mypackage"); 
    ...

我的XSD(简洁总结)如下所示:

<xsd:schema ... >
  <xsd:element name="MyClass" type="myType" />
  <xsd:complexType name="myType">
  ...
  </xsd:complextType>

</xsd:schema>

我想也许问题是“xsd:element”级别的类不存在,但是即使我将XJC设置为创建MyClass并且我已经验证MyClass有公共否 - 问题仍然存在arg构造函数。

所以,我看了几个其他的SO问题(实际上是整个互联网)。他们都没有给我足够的理解来解决这个问题,这可能只是对我的反思。任何人都能有所了解吗?或者给我一些替代测试来打破这个问题?

1 个答案:

答案 0 :(得分:2)

最终,此问题是由已修复的错误引起的。我加载的系统使用库JAXB-2.0,我认为我使用的是最新版本(JAXB-2.2.5)。由于设计糟糕的插件框架,我的版本被2.0 jar抢占了。

为了解决这个问题,我必须升级商业软件库,或尝试使用类加载器

感谢所有帮助我找到这个的人。