web-dev-qa-db-ja.com

Maven「シンボルが見つかりません」というメッセージが役に立たない

これは非常に単純な質問であり、おそらく私が知らない場所に設定されていますが、Googleはこの質問に対して特に役に立たず、コンパイルエラーメッセージの変更方法ではなく、コンパイルエラーに関する結果を示しています。

Mavenを使用してプロジェクトをビルドすると、おおよそ次の形式のエラーメッセージが表示されます。

[エラー] /path/to/source/Main.Java:[13,8]エラー:シンボルが見つかりません

Antまたはjavacでビルドすると、実際にはエラーメッセージに見つからないシンボルが表示されます。 mavenは行番号と文字の位置を教えてくれますが、実際のシンボルを表示する方が便利です。上記の行は、「シンボルを見つけることができません」エラーごとに指定された唯一の行です。シンボルを示す上または下の行はありません。その情報を伝えるためにMavenを取得する何らかの方法が必要だと思いますが、それが何であるかはわかりません。 -eオプションを試しました。mvnがそれを使用するように言ったので、実際のシンボルではなく、エラーのMavenトレースバックを提供しました。

何か助け?

Mvn --versionの出力は次のとおりです。

Apache Maven 3.0.4 (rNON-CANONICAL_2012-10-24_11-25_mockbuild; 2012-10-24 07:25:04-0400)
Maven home: /usr/share/maven
Java version: 1.7.0_09-icedtea, vendor: Oracle Corporation
Java home: /usr/lib/jvm/Java-1.7.0-openjdk-1.7.0.9.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.6.6-1.fc17.x86_64", Arch: "AMD64", family: "unix"

また、mavenの出力とまったく同じ(役に立たない)エラーメッセージの例を次に示します(ディレクトリを短くしただけです)。

[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /path/to/source/SoundEngineFilePanel.Java:[33,8] error: cannot find symbol
[ERROR]  class SoundEngineFilePanel
/path/to/source/SoundEngineFilePanel.Java:[36,8] error: cannot find symbol
[INFO] 2 errors 
[INFO] -------------------------------------------------------------

見つからないシンボルは、SoundEngineFilePanelではなく、「fakeThing」および「fakeThing2」です。

69
mattg

これは、Mavenコンパイラプラグインの バグ で、JDK7に関連すると思います。 JDK6で正常に動作します。

37
Peter Svensson

3.1への更新:

  <plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>
34

私の場合、問題は新しいクラスを追加したため再構築されなかった子jarにあり、その子jarのpom.xmlは、(<parent>タグを使用して)失敗したpom.xmlに子と親の関係として関連していませんでした。そこで、エラーがなくなった後、子jarを再構築しました。

6
a.parfenov

同じ問題がありました。その理由は、Maven依存関係を介して2つのJARファイルが追加されなかったため、mvn compileを実行すると、コンソールにエラーエラーが表示されたためです。

シンボルが見つかりません、クラス...」。

修正するには:

  1. ビルドパスからJARファイルを削除する
  2. ビルドパスに追加
  3. mvn compileを実行します
5
Ajax

Java 7、maven 2.2.1を使用していて、同じエラーが発生した場合でも、<scope>tests</scope>をPOMから削除して使用しました

mvn clean -DskipTests=true installは、Mavenバージョンをアップグレードせずにプロジェクトを正常にビルドします。

3
abi1964

私の場合、<scope>test</scope>としてスコープされた依存関係を使用していました。これにより、開発時にクラスが使用可能になりましたが、コンパイル時にこのメッセージが表示されました。

<scope>provided</scope>のクラススコープを回して、問題を解決しました。

2
Joabe Lucena

これは、この問題、つまりPOMファイルで定義した再パッケージ化が原因で発生します。

これをmavenプラグインの下のpomファイルから削除します。それが動作します

<executions>
    <execution>
        <goals>
             <goal>repackage</goal>
        </goals>
    </execution>
</executions>
2
Anto Livish A

これはMavenの機能ではありません。それはコンパイラの機能です。よく見てください。探している情報は次の行にある可能性が高いです。

1
Isaac

通常、このエラーは、コンパイルコードのバージョンが記述コードのバージョンと異なる場合に表示されます。たとえば、1つのクラスにメソッドAがあり、xxx-1.1.0.jarでメソッドがBに変更されているというxxx-1.0.0.jarに依存するコードを記述します。 xxx-1.1.0.jarでコードをコンパイルすると、エラーが表示されます。

0
ulysses

ワークスペースの他のプロジェクトに依存しており、これらのプロジェクトが適切にビルドされていない場合、このようなエラーが発生する可能性があります。そのような依存プロジェクトを最初に構築してみてください。

0
Piyush Gharote

私の推測では、コンパイラは無効な注釈について不平を言っています。アノテーションの配列の最後にあるコンマのように、Eclipseはすべてのエラーを表示しないことに気付きました。しかし、標準のjavacはそうです。

0
asgoth

解決策:コンポーネントをビルドする前に(mvn clean installを使用して)。プロジェクト全体を一度ビルドし、コンポーネントを再度ビルドします

なぜSO:
このエラーが何度も発生します。ほとんどの場合、コンポーネントを単独でビルドしようとします(他で変更を加えていないため)。

右、しかし、最近ダウンロードされたその余分なjarは、サードパーティ(コンポーネント内)によって行われた変更の影響を受ける可能性があります。プロジェクト全体で完全なmvnクリーンインストールを行うと、何度も節約できました

0
Ganesh Srini

Mavenでも同じ問題が発生しました。私の問題は、Mavenが異なるケース名でフォルダを生成していたことでした。 .service.MyFileを期待していましたが、ターゲットフォルダーではService/MyFileであり、Javaは大文字と小文字が区別されます。調べるのに数時間かかりましたので、ぜひチェックしてみてください。

0

プロジェクトでMavenインストールを実行しようとすると、Eclipse STSで同様の問題が発生していました。そのプロジェクトとそれらの依存関係が指すプロジェクトのpom.xmlファイルの依存関係のバージョンをいくつか変更しました。変更したすべてのプロジェクトでMavenインストールを実行し、元のプロジェクトでインストールを再度実行することで解決しました。

0
anthony stoico

おそらく、IDE大文字と小文字を区別するプロパティを確認する必要があります。私は同じ問題を抱えていて、Ideaの大文字と小文字を区別することで解決しました(私のファイルシステムは大文字と小文字を区別します): https://confluence.jetbrains.com/display/IDEADEV/Filesystem+Case-Sensitivity+Mismatch

0