javax.xml.bind.JAXBException: "org.example.mypackage" doesnt contain ObjectFactory.class or jaxb.index
試圖創建使用JAXBContext.newInstance(String contextPath)
一個JAXBContext
。我猜測有一種「通常」的方式來創建和維護一個jaxb.index文件。
javax.xml.bind.JAXBException: "org.example.mypackage" doesnt contain ObjectFactory.class or jaxb.index
試圖創建使用JAXBContext.newInstance(String contextPath)
一個JAXBContext
。我猜測有一種「通常」的方式來創建和維護一個jaxb.index文件。
確保您將正確的類傳遞給該方法。假設你的XML根元素是XMLRoot,你會稱呼其爲:
JAXBContext context = JAXBContext.newInstance(XMLRoot.class);
還要確保您使用的JAXB編譯器(XJC)爲您正在運行的Java版本的正確版本。來自舊編譯器的JAXB生成的類無法在Java 6的JAXB中正常工作,並提供相同的錯誤。
嘗試這種方式,
JAXBContext context = JAXBContext.newInstance(new Class[] {your.package.Test.class});
此外, 確保您添加的@XmlRootElement
到測試類。
@XmlRootElement
class Test {
private String ...;
private int ......;
}
也確保您使用的是Java 1.5
的jaxb.index文件只是包內部有JAXB註解類的列表。
文件中的每一行都是一個類的簡單名稱,而不是其完全限定名稱。
你可以在這裏閱讀更多:http://cmaki.blogspot.com/2007/09/annotated-jaxb-classes.html
按分類,你的意思是完全合格的類名嗎? `Foo`是類名,`com.a.b.c.Foo`是完全限定的類名。 – Dojo 2015-12-18 10:35:31
@Andrew Coleson - 你會不會想放packagae名字在那裏,而不是根元素的標籤名? – volvox 2010-03-29 23:15:06