IntelliJインスペクションで「シンボルを解決できません」と表示されるが、コードはコンパイルされる


569

プラットフォーム:IntelliJ Community Edition 10.0.3
SDK:jdk1.6.0_21
OS:Windows 7

そのため、IntelliJで完全に困惑している奇妙な状況にあります。Mavenプロジェクトをセットアップして、log4jを依存関係としてpom.xmlファイルに追加します。IDEAインスペクションは問題なく実行され、私のユニットテストはすべてコンパイルして実行されます。

次に、次のようにmvn install:install-fileを使用して、hunnysoftのjmimeライブラリをローカルのmavenリポジトリに追加しました。

mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime \
-DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar

Mavenはjarファイルをローカルリポジトリに正常にインストールしました。

次に、IntelliJの設定=> Maven =>リポジトリサービスに移動し、ローカルリポジトリを更新しました(IntelliJがリポジトリのコンテンツのインデックスを再作成するため)。

最後に、次の依存関係をpom.xmlファイルに追加しました(log4j依存関係のすぐ上)。

<dependency>
    <groupId>jmime</groupId>
    <artifactId>jmime</artifactId>
    <version>3.1.1e</version>
</dependency>

次のように新しいクラスを作成します。

package com.stackoverflow.question;

import org.apache.log4j.Logger;
import com.hunnysoft.jmime.ByteString;
import com.hunnysoft.jmime.Field;
import com.hunnysoft.jmime.FieldBody;

public class StackOverflowQuestion {
    public Field create(String name, String text) {
        Logger.getLogger(getClass()).debug("create entered");
        FieldBody body = new FieldBody();
        body.setText(new ByteString(text));
        Field field = new Field();
        field.setFieldName(name);
        field.setFieldBody(body);
        return field;
    }
}

奇妙さのために。IntelliJのインテンションメカニズムは、Maven pomファイル内のロガーインポートを正しく認識して認識します。しかし、hunnysoft輸入のすべてのことが報告されます。「解決シンボル『バイト文字列/フィールド/ FieldBody』ことができない」、しかしビルド=>コンパイル「StackOverflowQuestion.java」コンパイルすべて正しく、私はこのクラスのために作成されたユニットテストは罰金を実行します(ただし、また、create()の呼び出しを問題領域としてマークする意図もあります)。

したがって、どこかでIntelliJが意図サブシステムのjmime.jarファイルを無視しています。log4j依存関係が正常に機能し、すべてが正常にコンパイルおよび実行されるため、混乱しています。F12(「Go To Declaration」)はLoggerインポートで機能しますが、すべてのjmimeインポートで機能しません。

もう1つ、「プロジェクト」ウィンドウの「パッケージ」ビューに移動すると、「com.hunnysoft.jmime」パッケージが表示され、上の「コードライブラリ」の下のコードスニペットにインポートしたすべてのクラスが表示されます。 。上記の依存関係をpom.xmlファイルから削除すると、このパッケージが消えてコンパイルが中断します。

検査のクラスパスが壊れているようですが、[設定] => [意図]のどこにもこの設定がないようです。コンパイラー領域(そのような設定を期待していたわけではありません。IDEAはpomファイルとJDKに基づく正しいクラスパスをすでに知っているはずです)。

最後の実験として、(mavenを使用せずに)まったく新しい標準J2SEアプリケーションプロジェクトを作成し、jmime.jarファイルをそのライブラリの1つとしてプロジェクトに直接追加しました。この新しいプロジェクトで、上記とまったく同じ問題に遭遇しました。

次に、jmime jarファイルのMANIFEST.MFを示します。

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.5.4
Created-By: 10.0-b23 (Sun Microsystems Inc.)

Name: com/hunnysoft/jmime/
Sealed: true
Specification-Title: Hunny JMIME
Specification-Version: 3.1.1
Specification-Vendor: Hunny Software, Inc.
Implementation-Title: com.hunnysoft.jmime
Implementation-Version: 3.1.1E
Implementation-Vendor: Hunny Software, Inc.

このjarファイルに異常は見られません。

私の推測では、おそらく問題は依存関係の欠落の問題かもしれません。しかし、AFAIK jmimeは自己完結型であると想定されています(JarAnalyzerは何も思い付かないのですが、依存関係のjarが欠落している場合はそうなります)。

それで、誰かがアイデアを持っていますか?


stackoverflow.com/questions/15046764/…も参照してください。Maven依存関係の一部であるシンボルを解決できない場合[私にとっては、M2_HOMEがないためです]
rogerdpack

1
2018.3.3。それでも同じエラー...
ダイエット

回答:


999

まず最初に、試してみてください。File | Invalidate Cachesそれでも問題が解決しない場合は、IDEAシステムディレクトリを削除してください。次に、Mavenプロジェクトを再インポートし、それが役立つかどうかを確認します。

奇妙なケースでは、コンパイルされたクラスが誤った情報を報告し、IDEAを混乱させる場合があります。このjarのクラスがjavapを使用して正しい名前を報告していることを確認します


1
プロジェクトファイル、dirsを削除しましたが、キャッシュを無効化して再起動するまで修正されませんでした。先端をありがとう!これを自動的に行う方法がないのではないかと思います。あなたはそう思うでしょう。つまり、私はプロジェクトをpom.xmlから完全に再インポートしましたが、それでもキャッシュが「無効化」されていませんでした。
アントニースタブ2013年

9
FWIW、これらの修正は私にとってはうまくいきませんでした。別のプロジェクトに依存しているMavenプロジェクトがあります。ビルドはIDEA 10.5の内外で機能しますが、他のプロジェクトからのシンボルの一部は依存プロジェクトで赤でマークされています。キャッシュを無効にして再起動しました。運が悪い。IDEAファイルも削除し、依存プロジェクトを再インポートしました。運が悪い。
パスタファリアン2013年

10
ご回答ありがとうございます。最終的に、IDEAに「Maven 3を使用してMavenプロジェクトをインポートする」ように指示する必要があることがわかりました。「設定」->「Maven」->「インポート」の下。support@jetbrains.comとの長いメール交換の後に発見されました。
パスタファリアン

1
メニューオプションは「ファイル|キャッシュの無効化/再起動」になりました(Android Studio 0.8.2、linux)。
CoatedMoose 2014

19
何度試しても無効化は機能しませんでした。.ideaフォルダーを削除してから、build.gradleでプロジェクトを再インポートしました。現在は機能しています。
HelpMatters 2016

108

次のトリックは私のためにこの問題を解決しました:

  • コードエディターを右クリック
  • Mavenにカーソルを合わせて展開する
  • 再インポートをクリックします

私のアイデアのバージョンは12.0.4です


IntelliJ for Mac OSでこれを行うにはどうすればよいですか?
Ankit Rustagi

Mac OSの@AnkitRustagiは、プロジェクトパネルの下のプロジェクトディレクトリを右クリックします。Maven->再インポート。ホットキー、ダブルタップShift、またはShift + Command + Aを使用して、「すべてのMavenプロジェクトを再インポート」を検索することもできます
Lakota Lefler

5
右クリックは私にとってヒントです。どうやら私のpom.xmlはmavenファイルとしてマークされていないため、右クリックしてマークを付ける必要があります。「Mavenプロジェクトを自動的にインポートする」を有効にして、その後すべてのパッケージをインポートしました。
rasyadi

4
2017.1.xがMavenプロジェクトを再インポートしている場合:View -> Tool Windows -> Maven Projects、サイクル矢印アイコンをクリックします。
Vielinko

Mavenモジュールを再インポートすることも
Rich

37

上記の解決策はどれも私にとってうまくいきませんでした。手動でmain.imlファイルを削除すると、突然機能しました。


4
どうもありがとう!これも、私が抱えていた問題を解決した唯一の解決策でした。何が起こったのかというと、私のプロジェクトの名前が変更され、IntelliJが.idea / modulesの下にある古い.imlファイルをどうにか消去しませんでした。これらの余分な.imlファイルを削除し、プロジェクトを再ビルドして問題を修正しました。
Chen

働きました!すごい!しかし、それが機能する理由を誰かが説明できればそれは素晴らしいでしょう。
Hamza Belmellouki

1
そのファイルはどこですか?<projectname> .idlを削除したところ、プロジェクトの構造がなくなりました!! さらに、imlファイルが存在しないため、設定を読み込めません
KansaiRobot

完全に動作します。JDKの変更、キャッシュの無効化、プロジェクトの再インポートを試みましたが、何も機能しませんでした。main.imlを削除すると機能します。
rs_

31

Gradleユーザーの場合:

プロジェクトをbuild.gradleファイルと同期する必要がある場合があります。

これを行うには、プロジェクトペインの下のGradleファイルを右クリックしますが、それは私には何もしなかったようです(私のバージョンのバグだと思います)。これが発生するかどうかは、待機しているIntelliJタスクが開始されないためわかります。代わりに、Gradle Toolペインを開き、同期(更新)ボタンをクリックします。これは私にとってはうまくいきましたが、キャッシュを無効にして再起動するとうまくいきませんでした。

私自身の状況:GradleでScalaプロジェクトを使用していて、これを行わなければなりませんでした。


余談ですが、ビルドシステムを少しリファクタリングした後、これを再度行う必要があることを伝えたいだけです。どういうわけか、IntelliJは以前にポップアップしなかったbuild.gradleファイルにいくつかの問題を発見しました。結局、すべてをかなり素早く動作させることができました。
bbarker

7
Gradleのツールペインがである: View > Tool Windows > Gradle
UTF_or_Death

@bbarker-2017年8月6日(日)にIntelliJを最新バージョンに更新しました。プロジェクトファイルペインでbuild.gradleファイルを右クリックしても何も起こらないという問題があります。ありがたいことに、Gradle Toolウィンドウ([表示]-> [ツールウィンドウ]-> [Gradle])の[更新]ボタンを使用するヒントはうまくいきました。
Robert Oschler 2017

build.gradleの問題について:実行構成がない場合、IntelliJが存在しない問題を見つけることがあります。mavenCentral() could not be resolvedjUnit構成を元に戻すまで、奇妙なことがありました(新しいGradleプロジェクトを作成し、すべてのソースファイルをコピーして、プロジェクト全体をGradleに移植しました)。
エゴールハンス

28

これは、この同じ質問に対する別の回答でここに記載されていますが、これだけで問題が解決します。すべてのビルドは、IntelliJの外部の別のターミナルで行います。したがって、キャッシュには、IntelliJアプリがキャッシュを読み取るための適切な権限を設定する必要があります。

プロジェクトのルートフォルダから実行します。

$ mvn -U idea:idea

これは役立つと思いますが、不本意に実行すると接続がタイムアウトします。リポジトリに接続できませんでした:(
KansaiRobot

あなたは私の(後半)日を救った!
Gavriel

19

[ファイル]-> [キャッシュを無効にする]を選択してIDEを再起動すると、プロジェクトが1つ追加されます。右上にトーストボックスが表示され、自動インポートを有効にするかどうかを尋ねられ、問題が解決しました。


14

確認するもう1つのこと:依存関係が重複していないことを確認してください。私の場合、この動作を示すモジュールが次のように誤って構成されていることがわかりました。別のモジュールへの依存関係があり、他のモジュールによって生成されたjarへの依存関係がありました。これは、重複して参照されるすべてのシンボルを意味し、あいまいでした。


11

プロジェクト構造の一貫性のない/重複したモジュール名がこの問題の原因でした。

  1. に行く File -> Project Strucutre -> Modules
  2. 赤い下線のあるモジュールをクリックして
  3. 「依存関係」タブに移動
  4. 赤い依存関係が依存関係リストに実際に存在することを確認してください。そうでない場合は、既存の依存関係名と一致するように名前を変更します

これは、IntelliJが適切にシャットダウンせず、名前を変更したモジュール名を適切に保存できない場合に発生する可能性があります。


1
最終的に。なんらかの理由で「メイン」と私のプロジェクト名の2つのモジュールがリストされていました。メインを削除し、エラーはなくなりました。
ボビー

9

修正は公開されましたか?2013年に行われた「コンパイラーのオーバーホール」により、最初にv11 / 12に影響を及ぼした問題が表示されます。2014年末までのJiraでの関連する問題についての議論。 。http://youtrack.jetbrains.com/issue/IDEA-98425

また、Jira IDEA-98425では修正済みとマークされましたが、検証されていません(v12.0.3)。次の回避策のいずれも、この「シンボルを解決できません」を解決するの役立ちませんでした、バージョン13.1.1で問題Windows上ので

a。削除する.IdealIC13をフォルダーをます(次に、ファイル\キャッシュを無効にする/再起動)

b。からMavenプロジェクトウィンドウ、

b.1 mvn -U idea:idea –〉このMavenゴールを実行すると、依存関係をリロードするとします。これは正常に機能しますが、前回のFRI以降、プロジェクトを再コンパイルしようとしたため、このmavenゴールの実行は失敗しました(もちろん、「シンボルを解決できません」として失敗します。これは、最初にこのコマンドを実行して修正しようとしていることです)。 mvn -version — 3.2.5で参照されているMavenバージョンを表示し、動作していることを示します

b.2プロジェクトを右クリックするだけで、 インポートする

b.3ファイル\ キャッシュの無効化/再起動

c。この設定の有効化と無効化の両方を試しました:ファイル->設定-> Maven->インポート->「maven3を使用してプロジェクトをインポート」

d。設定\ Maven \マルチプロジェクトのビルド失敗ポリシー=最後に失敗(デフォルトではなく)

何も機能しません。MavenでのIntelliJサポートの状況

https://youtrack.jetbrains.com/issue/IDEA-99302

JetBeansのリリース履歴から、https: //www.jetbrains.com/company/history.jsp

IntelliJ v14 2014年11月

IntelliJ v13 DEC 2013

私はv12修正済み(未検証)が後続のリリースに組み込まれると思います。IntelliJのどのバージョンで同様の問題を抱えている人はいますか?あなたの経験を共有してください。IntelliJ mavenサポートが壊れているようです。


問題が消えた...「インポート」プロジェクトの代わりに「オープン」プロジェクトの後で...なんて変なんだ。

これは私のために働いた!:)仕事の一日を失ったが、それはうまくいった。オープンとインポートの違いは何でしょうか
Arran

5

私のプロジェクト構造:

src -> main -> scala -> mypackages

機能したもの:

scalaフォルダを右クリックし、[ディレクトリをソースルートとしてマーク]をクリックします。


4

他の回答者は私のために働いていません。IntelliJが間違った.m2ファイルをポイントしたため、インポートが解決されませんでした。

IntelliJバージョン:IntelliJ Idea 2018.1.5

.m2ディレクトリの場所が間違ったパスを指していました。私が修正したのは、IntelliJを正しい.m2ディレクトリに再ポイントして更新することだけでした。

まず、「ファイル」->「設定」->「ビルド、実行、デプロイメント」->「ビルドツール」->「Maven」に移動します。

ユーザー設定ファイルローカルリポジトリを変更する必要がありました私の.m2ディレクトリの正しい場所にします。

この後: ファイル->設定->ビルド、実行、デプロイメント->ビルドツール-> Maven->リポジトリに移動します。

[更新]ボタンをクリックします。


3

別の代替案について。

JDK7_07を使用した場合にもこの問題が発生しました。ここですべての答えを試しました(IDEAシステムディレクトリの削除を除く)。しかし、私はまだ問題を抱えています。だから私がやったことは:

最新のJDK(JDK7_45でした)をインストールし、IntellijのJDKを新しいJDKに設定すると動作します。


手動でJDK 11.0.4をインストールすることによってそれを解決したのIntelliJ IDEA 2019.3とバンドルされたJDK 11.0.3に問題があったと、ここを参照してください: stackoverflow.com/questions/61338200/...
ベンジャミンザック

3

私はこの問題を抱えていて、それがなくなるわけではありません。最終的にIntelliJ configディレクトリを一掃し~、IntelliJプロジェクトを最初から再構築しました。(これは、キャッシュされたファイルなどの問題を解決するために1時間を費やすのに比べて、最終的には約15分しかかかりませんでした。)

私の推測では、最初の問題はjavathings.blogspot.com/2009/11/too-many-open-files-in-intellij-idea.html(NB:2018年現在、そのリンクは無効ですが archive.orgにはこの回答が最初に書かれたときの周りのページのコピーがあります)またはディスクスペース/メモリの問題によりJavaがクラッシュします。IntelliJは破損しているように見えました。


3

Mavenプロジェクトがマルチモジュールプロジェクトの場合は、一部のモジュールがintellijによって無視されているかどうかを確認してください。

  1. [表示]-> [ツールウィンドウ]-> [Mavenプロジェクト]をクリックし、一部のモジュールが無視されているかどうかを確認します(無視されたモジュールは灰色で表示されます(例:gs-multi-module次の画像))。

ここに画像の説明を入力してください

  1. 無視されたモジュールを右クリックして、を選択しますUnignore Projects

ここに画像の説明を入力してください

次に、intellijがインデックス作成を完了するまで待ちます。その後、機能します。


2

キャッシュを無効にして再起動した後; そして、Mavenの設定に問題がないことを確認したところ、依存関係として確実に設定したモジュールの「シンボルを解決できません」がまだ表示されていました。間違ったスコープに設定したことがわかりました。

モジュールを右クリックして[モジュール設定を開く]を選択すると確認できます。依存関係タブをクリックし、解決できない依存関係のスコープがコンパイルに設定されていることを確認します。


2

プロジェクトの再インポートは私にとってはうまくいきました。プロジェクトを右クリック-> Maven->再インポート

ファイル->キャッシュを無効にしてIDEを再起動したとき、プロジェクトを開きます。右上に「Mavenの変更が検出されました」というダイアログが表示され、インポートして自動インポートを有効にするオプションが表示されました。ここにプロジェクトをインポートした後でも、同じ問題が発生しました。上記の手順で問題は解決しました。



2

私の場合、IntellijIdeaからSpringブートプロジェクトを開こうとしていますが、Spring関連のすべてのファイルをインポートできないなどの同じ問題が発生しました。

それから私はしました:

ファイル->プロジェクトを閉じる->プロジェクトをインポート->外部モデルからインポート-> Gradleを選択->次へ->ファイルの場所からプロジェクトを選択->完了

これですべてが正常に機能します。

私はここで多くの答えを見てきましたが、ようやくこの解決策を見つけました。それは私のような人のために使うかもしれません。


1

はい、必要なJARを含むライブラリを作成し、モジュールに依存関係として追加する必要があるようです。


1

私の場合、buildDirのみが削除されます。この場合、File | Invalidate Caches機能しません。

私がBuild | Make Project以前にやったときFile | Invalidate Caches、すべてがうまくいきます。


エラーが発生しました:Javaエラーリリースバージョン5はサポートされていません
KansaiRobot

@KansaiRobotプロジェクトはJava 5を使用するように構成されているように聞こえます。最近のほとんどのライブラリーは少なくともJava 8を必要とし、それより低いものを使用する理由はあまりありません(JDKで多くのことが新機能とパフォーマンスの両方で発生しました)。なので、Java 8以降でもう一度お試しください。
エゴールハンス

1
  1. 「設定」を開く
  2. 「Maven」を検索
  3. 「Maven」の下の「Ignored Files」をクリックします
  4. pom.xmlファイルのチェックを外して、欠落している依存関係が含まれている
  5. 「OK」をクリック
  6. [ファイル]-> [キャッシュの無効化/再起動...]をクリックします。
  7. 「無効化して再起動」をクリックします

4の画面にはpom.xmlはありません
KansaiRobot

1

上記の解決策のどれも私のためにそれを解決しませんでした。コードが正常にコンパイルされた同じ問題がありましたが、IntelliJはインポートが見つからないことを示しました。IntelliJはコードの完成からそもそもインポートを提案しましたが。

私の解決策は、すべてをデフォルトのパッケージに移動し、パッケージを削除してから、com.foo.bar再度作成してすべてを元に戻すことでした。


1

提案された解決策は機能しませんでした。私は無視しなければなりませんでしたpom => maven => unignore projectを右クリックして、いくつかのプロジェクトする必要がありました。

その後、

mvn clean install -T 6 -DskipTests

コンソールでは、IntelliJは再び幸せでした。プロジェクトがどのように無視されたかはわかりません...



1

プロジェクト内のjavaおよびtestフォルダーにある:imlファイルを削除し、無効にして再起動します。

プロジェクトを削除するかどうか尋ねられます。はい入れます。エラーが発生します。


1

私にとってうまくいったのは、赤いマークが消えた後、赤いマークの付いたクラスがあったディレクトリを「ディレクトリのソースルートとしてマーク」することでした。何らかの理由でマークされていなかったようです。


1

Gradleプロジェクトの場合:

  1. IntelliJ IDEAを終了する
  2. <problematic-project-root>/.ideaディレクトリを削除する
  3. <problematic-project-root>/.gradleディレクトリを削除する
  4. 内のすべての.imlファイルを削除<problematic-project-root>
    • Windows コマンドプロンプトDEL /S /Q *.iml
    • Linux: find . | grep -e .iml$ | xargs rm
  5. 再インポートしたプロジェクトのIntelliJ IDEAのGradle

0

Mavenプロジェクトの場合は、設定->ビルドツール-> Maven->インポートに移動します。「Mavenプロジェクトを自動的にインポートする」チェックボックスをオンにします。問題を解決します。


0

キャッシュの無効化は私にとってはうまくいきましたが、アプリケーションを実行した後も同じエラーが発生しました。

だから私は試した(Intellij):

1-メニューバー-リファクタリング| ビルド | 実行| [ツール] -クリックビルドした後、プロジェクトを再構築

2-MVNクリーン

3-プロジェクトを右クリック> Maven>ソースの生成とフォルダーの更新

これがうまくいくことを願っています。

ありがとう


0

または、インポートしたファイルが大きすぎる可能性があります。これは、Intellijプロパティを変更した場合の例です:iead.max.intellisen.filesize(パスは$ {idea dir} /bin/idea.propertiesです)。 25000、そしてIDEを再起動すると、問題は消えました。お役に立てれば。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.