我在我的代码集中使用了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
有人可以帮忙吗?
答案 0 :(得分:0)
如果这对其他人有帮助,以下内容可解决我最近的“ MOXy已配置但被忽略”的问题。
我通过实现@XmlPath Javadoc中显示的第一个示例在Java 11(Open JDK)上对其进行了测试。
按照说明here,我将所需的属性文件添加到包含域类(我要序列化的带注释的bean)的包中。
我最初忘记做的步骤是:
我的IDE仅将编译的.class
文件复制到目标目录-而不复制其他任何文件(例如我的属性文件)。
杜。
如何修复取决于您的IDE。对我来说,这是对我的项目的ant构建配置的简单更改。
类似地,需要指示Maven将文件复制到JAR中的该文件夹。有多种方法可以做到这一点。参见this question以获得一些答案。
将此特定的配置文件放置到resources
目录中不会 不起作用(至少对我而言不起作用)。 MOXy指令非常具体-需要严格遵守。
在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>