1

Cygwin 環境でマルチモジュール Maven プロジェクトをビルドしようとすると、上記のコンパイル エラーが発生します。ビルドを壊している特定のモジュールは、jaxb-api バインディングに依存して Java オブジェクトの XML 要素へのマッピングを実行する Web サービス API です。これは、生成されている特定のエラーです。

[エラー] プロジェクト ASRB2CServices で目標 org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) を実行できませんでした: コンパイルの失敗: コンパイルの失敗: [エラー] 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>

そして、jaxb-api の 2.2.6 バージョンと jaxb-impl の 2.2.5 バージョンを使用しています。

<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 コンパイラ プラグインを使用していると思います。誰でも提供できる洞察は大歓迎です

4

2 に答える 2

1

私はついに問題を理解しました。どうやら、それはコンパイラのバグでした。IBM RAD/WebSphere にバンドルされている Java ランタイムに付属のコンパイラーの 1 つを使用していました。これは、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>

私の質問を見てくれた人に感謝します。

于 2013-06-19T12:51:21.667 に答える
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;
于 2013-06-18T20:14:45.800 に答える