使用JAXB時,你總是需要一個ObjectFactory類嗎?使用JAXB時,你總是需要一個ObjectFactory類嗎?
沒有它,我得到這個異常:
javax.xml.bind.JAXBException: 「com.abc」 犯規含有ObjectFactory.class或 jaxb.index
我gather該ObjectFactory可以矯枉過正。但鑑於這個例外,我猜你需要它..但不知道爲什麼?
使用JAXB時,你總是需要一個ObjectFactory類嗎?使用JAXB時,你總是需要一個ObjectFactory類嗎?
沒有它,我得到這個異常:
javax.xml.bind.JAXBException: 「com.abc」 犯規含有ObjectFactory.class或 jaxb.index
我gather該ObjectFactory可以矯枉過正。但鑑於這個例外,我猜你需要它..但不知道爲什麼?
當您使用工廠方法JAXBContext.newInstance(String)
時,您會得到該異常,您將包名稱作爲參數傳入。這確實要求ObjectFactory
在那裏,否則,JAXB不知道要處理哪些類。
如果您沒有ObjectFactory
,則需要使用JAXBContext.newInstance(Class...)
,而不是傳入帶註釋的類的顯式列表以添加到上下文中。
代替ObjectFactory,您可以包含一個jaxb.index文件,該文件是一個文本文件,其中包含一個新的Java類分行列表。
對於使用jaxb.index文件中看到的例子:
我們總是有相同的根元素。從根目錄我們有一個很大的classes/xml元素層次結構。那麼我們可以只使用'JAXBContext.newInstance(OurRoot.class)'?或者我們是否需要傳遞所有*我們課程的列表? – 2010-04-19 13:33:31
@Marcus:通常你只需要傳入根類,除非在註釋中有多態關聯,在這種情況下,你還需要傳遞它們。在'ObjectFactory'中生成的方法看起來有點奇怪,在大多數情況下,你根本不需要使用它們,你可以直接實例化。它們對創建'JAXBElement'包裝非常有用。 – skaffman 2010-04-19 13:47:43