3

Maven のクリーン インストールが失敗します。以下はエラーメッセージです。

[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile
(default-compile) on project MyProject: Compilation failure:
Compilation failure:

[ERROR] C:\..\MyClass.java:[13,2] cannot find symbol

[ERROR] symbol  : class MyAnnotation

[ERROR] location: class mypackage.MyClass

MyClass.java

public class MyClass{

    @MyAnnotation
    public static class MyAnnotation{
        //some static nested class code here...
    }

MyAnnotation.java

@Retention (RetentionPolicy.RUNTIME)
public @interface MyAnnotation{
} 

なぜこれが問題になるのか見当がつきません。誰かアイデアを教えてください。

4

3 に答える 3

6

問題が見つかりました...

問題の根本原因を特定するのに十分なコードが含まれていなかったことをお詫びします。通常、投稿には import ステートメントを含めませんが、今回は含める必要があります。以下のクラスは、より完全な例です。ご覧のとおり、以下のクラスは、ネストされた静的クラス (同じ .java ファイル内) に存在するオブジェクトへの静的インポートを宣言します。これはコンパイルの観点からは違法ではありませんが、Maven のクリーン インストールで問題が発生していました。Maven がこれを好まない理由はまだ 100% わかりませんが、この方法の静的インポートはそもそも意味がありません。これを修正するために、静的インポートを削除し、静的インポートが使用されていた場所に通常の静的呼び出し (MyAnnoation.someObject) を代入しました。

package com.classes;

import static com.classes.MyClass.MyAnnotation.someObject;

public class MyClass{

     @MyAnnotation
     public static class MyAnnotation{

     public static final Object someObject = new Object();

}

繰り返しになりますが、元の投稿で静的インポートの詳細を提供できなかったことをお詫びします。

于 2013-10-07T23:02:29.633 に答える
2

あなたmaven-compiler-pluginは1.5を使用していますか?デフォルトでは 1.4 を使用し、注釈は 1.5 で導入されました

于 2013-10-04T09:21:09.137 に答える
0

次のことを試してください。

  • クラスの 1 つだけをインポートします。

  • それ以外の場合は、常に FQN (完全修飾名) を使用してください。それが注釈 ( ) であると仮定しましょう@com.foo.MyAnnotation

  • また、Vinay が提案したように、sourcetargetバージョンを に設定しmaven-compiler-pluginます<configuration/>

于 2013-10-04T10:12:40.643 に答える