2009-05-22 38 views
26

我越來越如何使用jaxb.in​​dex文件?

javax.xml.bind.JAXBException: "org.example.mypackage" doesnt contain ObjectFactory.class or jaxb.index 

試圖創建使用JAXBContext.newInstance(String contextPath)一個JAXBContext。我猜測有一種「通常」的方式來創建和維護一個jaxb.in​​dex文件。

回答

4

確保您將正確的類傳遞給該方法。假設你的XML根元素是XMLRoot,你會稱呼其爲:

JAXBContext context = JAXBContext.newInstance(XMLRoot.class); 

還要確保您使用的JAXB編譯器(XJC)爲您正在運行的Java版本的正確版本。來自舊編譯器的JAXB生成的類無法在Java 6的JAXB中正常工作,並提供相同的錯誤。

+0

@Andrew Coleson - 你會不會想放packagae名字在那裏,而不是根元素的標籤名? – volvox 2010-03-29 23:15:06

14

嘗試這種方式,

JAXBContext context = JAXBContext.newInstance(new Class[] {your.package.Test.class}); 

此外, 確保您添加的@XmlRootElement到測試類。

@XmlRootElement 
class Test { 
    private String ...; 
    private int ......; 
} 

也確保您使用的是Java 1.5

35

的jaxb.in​​dex文件只是包內部有JAXB註解類的列表。

文件中的每一行都是一個類的簡單名稱,而不是其完全限定名稱。

你可以在這裏閱讀更多:http://cmaki.blogspot.com/2007/09/annotated-jaxb-classes.html

+0

按分類,你的意思是完全合格的類名嗎? `Foo`是類名,`com.a.b.c.Foo`是完全限定的類名。 – Dojo 2015-12-18 10:35:31

相關問題