包注释应该在文件package-info.java中

时间:2013-06-18 20:00:26

标签: java maven jaxb annotations cygwin

尝试在Cygwin环境中构建多模块Maven项目时出现上述编译错误。打破构建的特定模块是一个Web服务API,它依赖于jaxb-api绑定来执行Java对象到XML元素的映射。这是正在生成的特定错误:

[错误]无法执行目标org.apache.maven.plugins:maven-compiler-plugin:3.1:在项目上编译(默认编译)ASRB2CServices:编译失败:编译失败: [错误] C:/IBM/RAD/workspace/XForm_Maven/XForm_Maven_20130610/ASRB2CServices/src/main/java/com/rccl/pcp/api/v1/pricetypes/package-info.java:[1,146]包注释应该在文件package-info.java

以下是它抱怨的文件内容:

@javax.xml.bind.annotation.XmlSchema(namespace = "http://api.pcp.rccl.com/v1/priceTypes", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.rccl.pcp.api.v1.pricetypes;

我正在使用maven java编译器插件的3.1版本:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.5</source>
        <target>1.5</target>
        <fork>true</fork>
        <executable>${java.home}/bin/javac</executable>
    </configuration>
</plugin>

我正在使用2.2.6版本的jaxb-api和2.2.5版本的jaxb-impl:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.2.6</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.2.5</version>
 </dependency>

我不知道为什么我会收到这个错误。我做了一些谷歌搜索,我看到了一个可能的编译器错误,但我相信我正在使用最新版本的maven编译器插件。任何人都可以提供的任何见解都将非常赞赏

2 个答案:

答案 0 :(得分:1)

我终于找到了问题所在。显然,这是一个编译器错误。我使用的是与IBM RAD / WebSphere捆绑在一起的Java运行时附带的编译器之一。这是在我的Maven settings.xml文件中设置的:

<java.home>/Program Files (x86)/IBM/SDP/runtimes/base_v61/java</java.home>

当我将其更改为其他JDK时,它起作用了:

<java.home>/Program Files (x86)/Java/jdk1.6.0_34</java.home>

感谢那些看过我问题的人。

答案 1 :(得分:0)

您正在使用该文件

com/rccl/services/v1/commontypes/package-info.java 

用于注释包

com.rccl.pcp.api.v1.pricetypes

假设你的package-info.java走在正确的道路上,我认为你必须改变它的内容,

@javax.xml.bind.annotation.XmlSchema(namespace = "http://api.pcp.rccl.com/v1/priceTypes", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.rccl.services.v1.commontypes;