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

2022-01-19 00:00:00 java maven jaxb

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

I have a project where I want to work with a set of Classes generated by JAXB from an XSD. With these classes I would like to marshall/unmarshall from XML and JSON.

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

I've figured out I would need Moxy Eclipselink to do what I need. I tested my classes and process as an Ant project, then I decided to move it over to Maven for better management.

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

However, the jaxb.properties file does not seem to be recognized at runtime.

我的项目有一个用于对象的 Maven 工件,以及另一个用于逻辑/处理的工件.我一直在努力找出将 jaxb.properties 放在哪里以便阅读.

My project has a Maven artifact for the objects, and another artifact for the logic/processing. I've been pulling my hair out trying to figure out where to put the jaxb.properties so it could be read.

我试过了

对象项目

/src/main/resources/jaxb.properties
/src/main/java/[namespace]/jaxb.properties

逻辑项目

/src/main/resources/jaxb.properties
/src/main/java/[namespace]/jaxb.properties

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

However, when I try to get the classname of my JAXBContext I still get:

class com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl

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

If I modify my run settings by specifying a JVM option of:

-Djavax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

我明白了:

class org.eclipse.persistence.jaxb.JAXBContext

在这两个项目中,我都在 pom.xml 中指定了这一点

In both projects I have specified this in the pom.xml

<build>
      <resources>
          <resource>
              <directory>src/main/resources</directory>
              <includes>
                  <include>**/*.properties</include>
              </includes>
          </resource>
      </resources>
</build>

如果我查看 JAR,我会在其中看到 jaxb.properties.

If I look at the JAR, I see jaxb.properties in there.

现在我很困惑.

推荐答案

您需要确保jaxb.properties 文件与对应的模型类在同一个包结构的resources 目录下.

You need to make sure the jaxb.properties file is under the resources directory in the same package structure as the corresponding model classes.

示例

  • https://github.com/bdoughan/blog20110322

相关文章