2013-10-28 33 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搶先了。

爲了突破這個我不得不要麼升級商業軟件的庫,或嘗試與類加載器玩

謝謝大家誰幫我找到這個。

相關問題