我有一个项目,我希望使用JAXB从XSD生成的一组类。有了这些类,我想从XML和JSON中编组/取消编组。
我发现我需要Moxy Eclipselink来做我需要的事情。我测试了我的类和流程作为Ant项目,然后我决定将其移交给Maven以便更好地管理。
但是,似乎在运行时无法识别jaxb.properties文件。
我的项目有一个对象的Maven工件,以及逻辑/处理的另一个工件。我一直在试着弄清楚jaxb.properties放在哪里,以便可以阅读。
我试过了
对象项目
/src/main/resources/jaxb.properties
/src/main/java/[namespace]/jaxb.properties
逻辑项目
/src/main/resources/jaxb.properties
/src/main/java/[namespace]/jaxb.properties
然而,当我尝试获取我的JAXBContext的类名时,我仍然得到:
class com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl
如果我通过指定JVM选项修改我的运行设置:
-Djavax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
我明白了:
class org.eclipse.persistence.jaxb.JAXBContext
在两个项目中,我都在pom.xml
中指定了这个<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</build>
如果我查看JAR,我会在那里看到jaxb.properties。
现在我很困惑。
答案 0 :(得分:13)
答案 1 :(得分:0)
示例,在maven中使用java类
src\main\java\com\example\sitemap\generate\domain
和文件jaxb.properties
src\main\resources\com\example\sitemap\generate\domain\jaxb.properties
答案 2 :(得分:0)
如果麻烦的是为存在JAXB pojo类的每个Java包添加jaxb.properties文件,则将其用作系统属性。
System.setProperty("javax.xml.bind.JAXBContextFactory", "org.eclipse.persistence.jaxb.JAXBContextFactory");