我一直在尝试使用Eclipse MOXy为我的项目编组/解组一些JSON和XML文件。经过一系列测试后,我遇到了javax.xml.bind.PropertyException,似乎我的jaxb.properties文件没有被读取,因此使用的JAXBContextFactory是错误的。
我正在使用Eclipselink(MOXy)2.5.2。我已将jaxb.properties添加到我的类所在的同一文件夹中,其中包含以下内容:
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
这是我的测试课程:
public static void main(String[] args) throws Exception {
JAXBContext jaxbContext = JAXBContext.newInstance(SIRFCatalog.class);
System.out.println(jaxbContext.getClass());
// SIRFCatalog catalog;
// Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
// ** The exception is thrown in the line below:**
// jaxbUnmarshaller.setProperty(UnmarshallerProperties.MEDIA_TYPE, "application/json");
// jaxbUnmarshaller.setProperty(UnmarshallerProperties.JSON_INCLUDE_ROOT, false);
// FileInputStream fis = new FileInputStream(new File("/home/philviana/a.json"));
// catalog = (SIRFCatalog) jaxbUnmarshaller.unmarshal(fis);
}
当我运行上面的测试时(请看有用的代码被注释掉),我得到以下输出:
class com.sun.xml.bind.v2.runtime.JAXBContextImpl
表示MOXy的JAXB上下文工厂不是lodead。换句话说,我想使用org.eclipse.persistence.jaxb.JAXBContextFactory作为我的JAXBContextFactory(来自MOXy),但我得到的是RI的类com.sun.xml.bind.v2.runtime.JAXBContextImpl。 / p>
jaxb.properties文件与我的类在同一目录下使用main方法(只有我的项目的类)。这些是我的JAR:
eclipselink.jar
com.sun.tools.xjc_2.2.0.jar
com.sun.xml.bind_2.2.0.v201004141950.jar
javax.activation_1.1.0.v201108011116.jar
javax.mail_1.4.0.v201005080615.jar
javax.xml.bind_2.2.0.v201105210648.jar
javax.xml.stream_1.0.1.v201004272200.jar
org.eclipse.persistence.antlr-2.5.2.jar
org.eclipse.persistence.asm-2.5.2.jar
org.eclipse.persistence.core-2.5.2.jar
org.eclipse.persistence.moxy-2.5.2.jar
javax.persistence.source_2.1.0.v201304241213.jar
javax.persistence_2.1.0.v201304241213.jar
org.eclipse.persistence.jpa.modelgen.source_2.5.2.v20140319-9ad6abd.jar
org.eclipse.persistence.jpa.modelgen_2.5.2.v20140319-9ad6abd.jar
org.eclipse.persistence.jpars.source_2.5.2.v20140319-9ad6abd.jar
org.eclipse.persistence.jpars_2.5.2.v20140319-9ad6abd.jar
commonj.sdo_2.1.1.v201112051852.jar
有什么想法?
答案 0 :(得分:1)
您需要确保jaxb.properties
文件最终在类路径中。如果从Eclipse运行它,则jaxb.properties
可能不会从src
目录复制到编译类的目录。