2013-09-22 43 views
8

我有一个项目,我希望使用来自XSD的由JAXB生成的一组类。有了这些类,我想从XML和JSON中编组/解组。jaxb.properties在使用Maven构建时在运行时缺少

我已经想通了,我需要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 现在我很困惑。

回答

11

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

+1

Blaise,感谢您的GitHub链接。仔细阅读文件夹的结构后,它确实开始有意义。我把jaxb.properties放在正确的包中,它运行得非常好! –

+1

这对我很有帮助,我做了一次重构并在应用程序中移动了模型类,但忘记移动jaxb.properties。包结构必须在资源树下完全匹配。我被一个包裹关了,一切都破裂了。这是非常重要的一点。 – Jon

+0

谢谢sooo。这也是我的问题。这就是我喜欢stackoverflow的原因。所以,许多伟大的人喜欢你帮忙! – atom88

0

实施例,在行家java类

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

和文件jaxb.properties

src\main\resources\com\example\sitemap\generate\domain\jaxb.properties 
相关问题