无法使用JAXB配置Moxy

时间:2016-09-08 10:48:16

标签: xml eclipse maven jaxb moxy

我在我的代码集中使用了JxyB的Moxy实现,并尝试使用@XMLPath创建路径,但它似乎无法正常工作。我有一个Spring bassed项目,我在/ project / WEB / src / main / resources下创建了jaxb.properties,内容为:

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

我的课程放在/ project / WEB / src / main / java下 我已经配置了我的pom.xml来下载依赖项。 persistence.moxy - >

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

当我在WAS服务器上运行代码时,Moxy不会被重新识别,并且不会创建路径。不知道我做错了什么。

我甚至尝试过测试我的JAXBContext类,但我在控制台上得到的是:

JAXBContext jaxbContext = JAXBContext.newInstance(DocGenerator.class); 
System.out.println(jaxbContext.getClass());

class com.sun.xml.bind.v2.runtime.JAXBContextImpl

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

如果这对其他人有帮助,以下内容可解决我最近的“ MOXy已配置但被忽略”的问题。

我通过实现@XmlPath Javadoc中显示的第一个示例在Java 11(Open JDK)上对其进行了测试。

按照说明here,我将所需的属性文件添加到包含域类(我要序列化的带注释的bean)的包中。

我的IDE的解决方案

我最初忘记做的步骤是:

我的IDE仅将编译的.class文件复制到目标目录-而不复制其他任何文件(例如我的属性文件)。

杜。

如何修复取决于您的IDE。对我来说,这是对我的项目的ant构建配置的简单更改。

JAR解决方案

类似地,需要指示Maven将文件复制到JAR中的该文件夹。有多种方法可以做到这一点。参见this question以获得一些答案。

资源目录

将此特定的配置文件放置到resources目录中不会 不起作用(至少对我而言不起作用)。 MOXy指令非常具体-需要严格遵守。

POM依赖项

在Java 11中,模块java.se.ee已被删除。参见JEP-320。该模块包括JAXB(和JAX-WS)。要在Java 11及更高版本中使用JAXB,您需要将其作为单独的库添加到项目中。

鉴于此,我的POM依赖项记录在案:

        <dependency>
            <groupId>com.sun.activation</groupId>
            <artifactId>javax.activation</artifactId>
            <version>1.2.0</version>
        </dependency>

        <!-- 
             Use 2.3.1 below to prevent "illegal 
             reflective access operation" warnings.
        -->
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
        </dependency>

        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-core</artifactId>
            <version>2.3.0.1</version>
        </dependency>

        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.3.1</version>
        </dependency>

        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>eclipselink</artifactId>
            <version>2.7.6</version>
        </dependency>