10

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

JAR 的根 现在我很困惑。

4

3 回答 3

13

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

例子

于 2013-09-22T15:27:32.530 回答
1

例如,在maven中的java类

 src\main\java\com\example\sitemap\generate\domain

和文件 jaxb.properties

 src\main\resources\com\example\sitemap\generate\domain\jaxb.properties
于 2014-10-08T16:31:53.460 回答
0

如果为每个存在 JAXB pojo 类的 java 包添加 jaxb.properties 文件很麻烦,请将其用作系统属性。

System.setProperty("javax.xml.bind.JAXBContextFactory", "org.eclipse.persistence.jaxb.JAXBContextFactory");
于 2020-09-16T07:10:55.113 回答