2013-10-28 32 views
3

我正在生成一个要放入商业软件产品的jar。该jar符合商业软件的api,并依赖于第二个jar包,其中包含一组由PO XSD生成的POJO。然而,试图当我砸来实例化JAXBContext而当我失败什么可能导致“JAXBElement没有无参数默认构造函数”?

"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具有公共无参数构造函数。

所以,我已经看过其他几个SO问题(事实上在互联网上)。他们中的任何一个都没有给我足够的理解来解决这个问题,这可能只是对我的一种反思。任何人都可以提出一些见解吗?或者给我另外的测试来打破这种情况?

+0

不幸的是真正的源代码被锁定在我公司的内部网上。这就是为什么我在这里放弃一个完整的娱乐。 – InfernalRapture

+0

这是你如何创建JAXBContext'JAXBContext.newInstance(“mypackage”);'?尝试使用生成的ObjectFactory类。尝试使用包装方法时,我遇到了一些随机异常。除非你在运行时派生包名称,否则这是一个重构的噩梦。 –

+0

你在OSGi环境中运行吗? –

回答

2

最终,这个问题是由一个已修复的错误引起的。我正在加载的系统使用库JAXB-2.0,我认为我使用的是最新版本(JAXB-2.2.5)。由于设计不佳的插件框架,我的版本被2.0 jar抢先了。

为了突破这个我不得不要么升级商业软件的库,或尝试与类加载器玩

谢谢大家谁帮我找到这个。

相关问题