将EclipseLink MOXy指定为JAXB Provider无法正常工作

时间:2014-04-12 10:52:59

标签: java maven jaxb moxy

在将IntelliJ与Maven一起使用时,我在指定我的JAXB提供程序时遇到了一些问题。

我的主要目标是使用MOXy的XmlPath注释,因此我采取的第一步是关注this tutorial以更改我的JAXB提供程序。

指定要更改JAXB提供程序,您需要在与您的类相同的程序包中添加jaxb.properties文件。

但是在运行我的示例时:

import org.eclipse.persistence.oxm.annotations.XmlPath;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.Collection;
import java.util.LinkedList;

@XmlRootElement(name = "debug")
@XmlAccessorType(XmlAccessType.FIELD)
public class Debug {
    @XmlElement(name = "value")
    @XmlPath("debug")
    private Collection<String> values = new LinkedList<>();

    public Collection<String> getValues() {
        return values;
    }

    public void setValues(Collection<String> values) {
        this.values = values;
    }

    public static void main(String[] args) throws JAXBException {
        System.out.println(org.eclipse.persistence.Version.getVersion());
        System.out.println(JAXBContext.newInstance(Debug.class).getClass());
    }
}

使用这个pom.xml:          http://maven.apache.org/xsd/maven-4.0.0.xsd">         4.0.0

    <groupId>debug</groupId>
    <artifactId>debug</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.moxy</artifactId>
            <version>2.5.0</version>
        </dependency>

    </dependencies>


</project>

我仍然看到输出:

2.5.0
class com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl` 

我相信第一行确认MOXy在我的课程路径上,但我预计第二行是:

class org.eclipse.persistence.jaxb.JAXBContext

只是为了澄清我的jaxb.properties文件位于包含Debug.java的顶级包中,并包含以下行:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

我非常感谢有人指出我做错了什么!

0 个答案:

没有答案