1

package-info.java用来指定@XmlAccessorType(XmlAccessType.NONE)和一些使用@XmlJavaTypeAdapters. 模型对象(带有 JAXB 注释)放置在由其他模块共享的单独 maven 模块中。package-info.java如果模型对象位于单独的 Maven 模块中,则不会发现其中的配置。如果我出于测试目的将模型对象移动到相同的 Maven 模块,一切都很好。JAXBContext我认为从角度来看,单独的 maven 模块可以被认为等同于第 3 方库。我使用JDK1.7 JAXB 参考实现。任何想法如何配置可能不同?

4

2 回答 2

0

我也遇到了这个问题,在我的例子中,来自 package-info.java 的合格/不合格属性被忽略了。我设法找到了两种解决方法:

  • 就像 Pavla 写的那样,在本地复制所有带有 package-info.java 的 JAXB 类
  • 包含模块作为具有编译范围的依赖项(这给出了类在模块中的类似结果。在我的情况下,我使用 JAXB 类创建了单独的 jar 库)

我还发现它仅在创建 WebServices 的情况下才起作用(创建对象并发送到 WS 在不同的模块中工作正常)。

我正在使用 Jbossas7.1.1 和 cxf 2.4.6。在注册服务时,Jboss 从 JAXB 创建了 wsdl(在我的例子中是路径 /opt/jboss/jboss-as-7.1.1.Final/standalone/data/wsdl/module.war/SubmitMessage.wsdl)。在本地设置文件正确生成。

任何想法为什么创建 WS 会这样?

于 2016-04-15T07:43:12.777 回答
0

我最近遇到了这个问题,实际问题(使用 Java 8,即不涉及 Java 模块)是我在类路径中有两个 *.jar 文件,它们都包含相同的包 - 在一个 JAR 中,有 package-info.class使用 JAXB 注释,而在另一个注释中则没有。在那种情况下,我猜如果发现 package-info.class 文件取决于类路径排序(这是非常脆弱且只是半确定性的)。

于 2020-03-03T12:04:08.940 回答