java无法使用JAXB配置Moxy
我在代码集中使用JAXB的Moxy实现,并试图使用@XMLPath创建路径,但它似乎不起作用。我有一个基于Spring的项目,我创建了jaxb。/project/WEB/src/main/resources下的属性包含以下内容:
javax。xml。绑定上下文工厂=组织。日食坚持不懈jaxb。JAXBContextFactory
我的类放在/project/WEB/src/main/java下 我已经配置了pom。xml下载依赖关系。 坚持不懈莫西-->
<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());
班级通讯。太阳xml。绑定v2。运行时。JAXBContextImpl
有人能帮忙吗
# 1 楼答案
如果这对其他人有帮助,下面修复了我最近的“MOXy已配置但被忽略”问题
我通过实现@XmlPathJavadoc中显示的第一个示例,在Java11(开放JDK)上测试了它
按照说明here,我将所需的属性文件添加到包含我的域类(我想要序列化的带注释的bean)的包中
我的IDE解决方案
我最初忘记做的步骤是:
我的IDE只将编译的
.class
文件复制到目标目录——它不复制任何其他文件(例如我的属性文件)嗯
如何解决这一问题取决于您的IDE。对我来说,这是对我的项目的ant构建配置的一个简单更改
如果您使用的是Maven,那么
pom.xml
中的构建步骤如下所示:罐子的解决方案
类似地,需要指示Maven将文件复制到JAR中的那个文件夹中。有多种方法可以做到这一点。有关一些答案,请参见this question
资源目录
将这个特定的配置文件放在
resources
目录中不起作用(至少,它对我不起作用)。MOXy的说明非常具体,需要严格遵守POM相关性
在Java11中,模块Java。东南方。ee已被删除。见JEP-320。该模块包括JAXB(和JAX-WS)。要在Java11及更新版本中使用JAXB,需要将其作为单独的库添加到项目中
有鉴于此,以下是我的POM依赖项:
更新MOXy版本3的
以上注释适用于MOXy版本2.7.6
要使用版本3+,需要考虑到最近许多
javax
包被转移到雅加达。你可以阅读这个动作的背景here升级项目的步骤:
jaxb.properties
文件更改为以下内容:请注意,对于绑定上下文,此处对
jakarta
的引用发生了更改jakarta
,而不是javax
。例如,改变一下:为此:
pom.xml
中使用以下两个依赖项:这两个依赖项足以支持此处给出的代码示例的更新版本:XPath Based Mapping using MOXy