我正在
javax.xml.bind.JAXBException: "org.example.mypackage" doesnt contain ObjectFactory.class or jaxb.index
尝试使用JAXBContext
创建JAXBContext.newInstance(String contextPath)
时。我猜测有一种“通常”的方式来创建和维护一个jaxb.index文件。
答案 0 :(得分:36)
jaxb.index文件只是包含JAXB注释的包中的类列表。
文件中的每一行都是类的简单名称,而不是其完全限定名称。
您可以在此处阅读更多内容:http://cmaki.blogspot.com/2007/09/annotated-jaxb-classes.html
答案 1 :(得分:15)
试试这种方式,
JAXBContext context = JAXBContext.newInstance(new Class[] {your.package.Test.class});
另外,
确保将@XmlRootElement
添加到Test类。
@XmlRootElement
class Test {
private String ...;
private int ......;
}
还要确保您使用的是java 1.5
答案 2 :(得分:4)
确保将正确的类传递给方法。假设您的XML根元素是XMLRoot,您可以将其命名为:
JAXBContext context = JAXBContext.newInstance(XMLRoot.class);
还要确保您正在使用正确版本的JAXB编译器(xjc)来运行您正在运行的Java版本。来自旧编译器的JAXB生成的类将无法与Java 6的JAXB一起正常运行,从而产生相同的错误。