3 回答

TA貢獻1817條經驗 獲得超14個贊
看起來應該是這樣JAXBContext.newInstance(SettingsProvider.class)
。
該JAXBContext.newInstance(String ...)
方法的版本需要一個包名,正如錯誤消息所說,它應該包含一個ObjectFactory
類,或jaxb.index
將其引導到類的列表。

TA貢獻1842條經驗 獲得超22個贊
您正在使用此newInstance方法:
參數:
contextPath -包含模式派生類和/或 java 到模式(JAXB 注釋)映射類的java 包名稱列表
classLoader - 該類加載器將用于定位實現類。
所以 df778899 是對的,你不應該使用這個簽名作為getGenericName返回一個完全限定的類名而不是一個包。即使是包裹,您仍然會錯過ObjectFactory.class或jaxb.index
但JAXBContext.newInstance(SettingsProvider.class)也不會奏效。你會得到一個缺少的MarshalException指示@XmlRootElement
SettingsProvider像這樣注釋:
@XmlRootElement(name = "root")
static class SettingsProvider extends XmlSerializableObject<SettingsProvider>
{
private Settings settings;
// [...]
最后你會得到:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<settings>
<tmp>testing</tmp>
</settings>
</root>
添加回答
舉報