使用Maven构建时,运行时缺少jaxb.properties

时间:2013-09-22 14:33:59

标签: java maven jaxb

我有一个项目,我希望使用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。

Root of JAR 现在我很困惑。

3 个答案:

答案 0 :(得分:13)

您需要确保jaxb.properties文件位于与相应模型类相同的包结构中的resources目录下。

示例

答案 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");