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

Isr*_*pez 10 java jaxb maven

我有一个项目,我想使用JAXB从XSD生成的一组类.有了这些类,我想从XML和JSON中编组/取消编组.

我发现我需要Moxy Eclipselink来做我需要的事情.我测试了我的类和进程作为Ant项目,然后我决定将其移交给Maven以便更好地管理.

但是,似乎在运行时无法识别jaxb.properties文件.

我的项目有一个用于对象的Maven工件,以及另一个用于逻辑/处理的工件.我一直在拉着我的头发试图弄清楚把jaxb.properties放在哪里以便可以阅读.

我试过了

对象项目

/src/main/resources/jaxb.properties
/src/main/java/[namespace]/jaxb.properties
Run Code Online (Sandbox Code Playgroud)

逻辑项目

/src/main/resources/jaxb.properties
/src/main/java/[namespace]/jaxb.properties
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试获取我的JAXBContext的类名时,我仍然得到:

class com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl
Run Code Online (Sandbox Code Playgroud)

如果我通过指定以下JVM选项来修改我的运行设置:

-Djavax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
Run Code Online (Sandbox Code Playgroud)

我明白了:

class org.eclipse.persistence.jaxb.JAXBContext
Run Code Online (Sandbox Code Playgroud)

在两个项目中,我都在pom.xml中指定了它

<build>
      <resources>
          <resource>
              <directory>src/main/resources</directory>
              <includes>
                  <include>**/*.properties</include>
              </includes>
          </resource>
      </resources>
</build>
Run Code Online (Sandbox Code Playgroud)

如果我看一下JAR,我会在那里看到jaxb.properties.

JAR的根 现在我很困惑.

bdo*_*han 13

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