MOXy编组/解组错误:javax.xml.bind.PropertyException,因为使用了错误的JAXBContextFactory

时间:2014-09-01 16:27:53

标签: java xml eclipse jaxb moxy

我一直在尝试使用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

有什么想法?

1 个答案:

答案 0 :(得分:1)

您需要确保jaxb.properties文件最终在类路径中。如果从Eclipse运行它,则jaxb.properties可能不会从src目录复制到编译类的目录。