3 回答
TA贡献1817条经验 获得超14个赞
看起来应该是这样JAXBContext.newInstance(SettingsProvider.class)
。
该JAXBContext.newInstance(String ...)
方法的版本需要一个包名,正如错误消息所说,它应该包含一个ObjectFactory
类,或jaxb.index
将其引导到类的列表。
TA贡献1842条经验 获得超21个赞
您正在使用此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>
添加回答
举报