web-dev-qa-db-ja.com

IDEA JetBrains IntelliJ-'make'でコンパイルエラーが発生しますが、Mavenを使用してコンパイルした場合は正常で、IntelliJによってクラスファイルにエラーが報告されません

したがって、IntelliJにMavenモジュール(モジュールA)があります。最近、いくつかのクラスを別の新しいMavenモジュール(モジュールB)に移動し、それに依存関係を追加しました。これを行ったら、移動したクラスの1つのメソッドのシグネチャも変更しました(現在はモジュールBにあります)。

IntelliJが依存関係の変更を取得し、影響を受けるファイルのすべてのJavaインポートが再び正しいことを確認するように、pomsを再インポートしました。 2つのモジュール)モジュールAのクラスでコンパイルエラーが発生し、モジュールBのクラスの変更されたメソッドを呼び出しています。

エラーメッセージは基本的に、そのメソッドは存在しないが、古いメソッドはまだ存在すると信じていることを言っています! 「make」エラーをクリックすると、変更されたメソッドを呼び出すモジュールAのクラスの行に移動します。奇妙なことに、IntelliJはファイル内で問題がないことを認識しています。つまり、メソッドは通常コンパイルエラーのように赤で下線が引かれていませんが、クラスファイル名は:(

「mvn install」(モジュールBもインストール済み)を使用してコマンドラインからコンパイルしましたが、すべて成功しています。モジュールAとモジュールBの両方のターゲットでクラスディレクトリを削除し、IntelliJのキャッシュを無効にして再起動しました...まだ起こっています...何かアイデアはありますか?

42
Ed .

それで、今朝それを述べただけで、すべてうまくいきました!

昨夜、私がしたことは、モジュールAとモジュールBの親POMから新しいプロジェクト(intelliJプロジェクト)を開き、ビルドに成功したことです。でも

2
Ed .

これが役立つかもしれないことがわかりました:

ファイル->キャッシュの無効化

41
OhadR

Mavenプロジェクト->再インポートが役立つはずです。

21
Ivan Voroshilin

私はこの同じ問題に数時間を費やしました。世界のすべての掃除は助けにならなかった。

プロジェクトのoutおよびtargetディレクトリを削除し、再コンパイルしました-これでクリアされました。

編集:ファイルメニューの下にも魔法の機能があります:「キャッシュの無効化/再起動」これは、「intellijが混乱している」問題を修正します。

16
bsautner

IDEA(ユーザーコンパイラjavacインプロセス)の[Javaコンパイラ]設定を変更して、問題を修正します。

7
user1239332

mvn cleanプロジェクトとmvn installプロジェクトB。

IntelliJと直接提供されるmakeコマンドを使用する場合、MavenとintelliJの統合は一種のバグです。 mvnコマンドを直接使用するか、mavenパネルから起動する必要があります。

6
Colin Hebert

私は非常によく似た問題に出くわし、それが非常識になりました。

私のコードは、通常実行しているantタスクで問題なくコンパイルできますが、IntelliJでビルドされず、「シンボルが何とか見つかりません」と文句を言います。

コンパイラーに「除外」ファイルを追加できます。私のファイルはどういうわけかそのリストに追加されました。

このリストは、ファイル>設定>コンパイラ>除外(IntelliJ 13)にあります

4
spudfkc

次の手順でこの問題を修正する必要があります。

  1. delete .IntelliJIdea12/.IdeaIC12 c:/ user /.../の下に古い
  2. Intelliのキャッシュを無効にします:[ファイル]> [キャッシュを無効にする]
    これにより、起動時にワークスペースのインデックスが再作成され、ローカルの履歴が消去されます。これを行う前に、コミットまたはバックアップコミットされていないすべての変更。
  3. インデックス作成後にワークスペースに戻ったら、maven clean installを実行します。
  4. ビルドが成功したら、Maven Re-importsをクリックします

これは私のために働いた、私はそれが同様の問題を抱えている他の人にとっても働くべきだと思う。

4
vishy12

私が見る動作は、元の著者によって説明されたものに似ています。 Intellij 14ではエディターの右側にエラーマーカーが表示され、13ではエラーマーカーが表示されなくなります。

これは、Scalaの代わりにJavaを使用し、Mavenの代わりにSBTを使用する場合にも発生します。

また、2番目のプロジェクトがロードされた後にこれが発生することに注意してください。最初は常に問題ありません。 (多くの試行錯誤の後)Intellijの内部キャッシュが何らかの形で破損したことが原因であると考えられました。 「キャッシュの無効化」はいつかは機能し、時には機能しませんでした。

Play!を使用して多くのプロジェクトに取り組んでいます。フレームワークとそれらは異なるバージョンのScalaおよび多くの依存関係を使用します。Intellijが使用する内部キーは同じクラスが複数回ロードされる状況を処理するのに十分ではないため、キャッシュが破損すると仮定しました異なるjarファイル、異なる署名を持つため、外部ビルドが正常に機能する一方でエディターエラーが発生します。

次に、「IntelliJ IDEAのsbtプロジェクトのIvyキャッシュの場所を変更しますか?」 postは、アイビーパスが内部キャッシュキーの一部であることを期待して、アイビーキャッシュSBTとIntellijの使用を分離するというアイデアを与えました。

TypeSafeのPaul Phillipsが「SBT extras」ツールを提供し、ここでプロジェクトベースのivyホーム、キャッシュ、およびSBTブートを使用するようにSBTに指示する方法を見つけました。

https://raw.githubusercontent.com/paulp/sbt-extras/master/sbt

declare -r noshare_opts = "-Dsbt.global.base = project/.sbtboot -Dsbt.boot.directory = project/.boot -Dsbt.ivy.home = project/.ivy"

最後に、ユーザーのホームベースの.ivy2とすべてのコンテンツを削除しました。 Intellijがこのフォルダーを使用しないように、読み取り専用にしました。これは間違いでした。これを行うと、Intellijは依存関係の解決を静かに失敗するようです。

これによりエラーが解決し、エラーが再発しないと考えています。 :-)

Intellijの連中がこれを聞いた場合:TypeSafeのすべてのPlay Frameworkテンプレートでリリース(Scala、SBT、エディター)をテストしてください。この方法で問題はすぐに明らかになります。

2
SemanticBeeng

私の場合、ディレクトリを手動で「Test Sources Root」としてマークしていましたが、IDEAは親Mavenプロジェクトでマークしました。File-> Project structure ...-> Modules fixedでマーク解除しました問題。

1

これは、IntelljJの外部でビルド中に異なるバージョンのJavaを使用している場合に発生する可能性があります。 IntelliJにはJava10があり、ターミナルでのビルド中にJava8を使用していました。 JavaバージョンをIntelliJに変更すると、この問題が修正されました。

1
false9striker

同様の問題を抱えていて、気が狂っていました。私はIntellijを永遠に使用したので、上記の回答で言及された他のすべてのことをしましたが、どれも機能しませんでした。最終的に、Intellijのmavenプロジェクトの部分で、私のモジュールの1つがコンテキストメニューからの単純なunignoreコマンドで「無視」とマークされていることがわかりました。

1
Fortytwo

上記の答えはどれも私にとってはうまくいきませんでした。

私の場合、最終的にモジュールの明示的なMaven実行構成を作成し(コマンドラインを「クリーンインストール」として)、実行する必要がありました。

Run > Edit Configurations

0
KrishPrabakar

恥ずかしいことですが、この問題もありましたが、これはパッケージ名の間違いによるものです。

新しいプロジェクトのパッケージを作成するときに、誤って「org.package」というパッケージを作成しました。

私のプロジェクトには、次のようなディレクトリ構造がありました。

/src/main/Java/org.package/

IntilliJであらゆる種類の混乱を引き起こしました。

正しいフォルダー構造がファイルシステムに作成されると、IntelliJはうまく機能しました。

/ src/main/Java/org/package /

/org.package/と/ org/package /の違いに注意してください

0
hooknc

IntelliJ 12から13にアップグレードした後、同様の問題に直面していました。複数のアンインストールと再インストール(複数のintelliJバージョン)、多数のクリーンアップ、および.m2リポジトリのクリアの後、最終的に自分の問題がわかりました。

私のintelliJ設定では、メインのPOMファイルに記載されているリポジトリに接続できませんでした。これは順番に、pomファイルの一部として言及された代替リポジトリでした。 POMが正しいリポジトリを指すようになったら、すべてのクラスでコンパイルの問題が解決しました。

リポジトリが接続されているかどうかを確認するには、[ファイル]-> [設定]-> [Maven]-> [リポジトリ]に移動します。

ここで、インデックスされたMavenリポジトリが正常に接続されるはずです。そうでない場合、intelliJはほとんどのサードパーティおよびモジュールの依存関係を解決できません。

0

修正は、Ajcの代わりにjavacにし、jdkのバージョンに応じて1.8を置くことでした。

何らかの理由でIntelliJを無効にして再起動すると、デフォルトに設定されました!

after i fixed i made it javac instead of Ajc

私のバージョンは

enter image description here

0
shareef

これは私に起こりました...ソースディレクトリに余分なmain.imlファイルがあることを認識していたことを修正したものです。すぐに削除すると、コンパイルエラーはなくなります。

0
Nathan Adams

12から13にアップグレードした後、今日この問題に遭遇しました。

プロジェクトとモジュールに同じ名前を使用し、Intellijがこれを許可しているように見えますが、正しく処理できないため、後で問題を修正しました。

Javaエディター。バージョン13のバグであるはずです。エラーはありませんが、設定がコンパイルに影響する理由はわかりません。

0
amigobot

私は非常によく似た振る舞いをしました。 (Scala-)テストの実行は、 'make'ステップ中の無関係なJavaクラスのエラーにより常に失敗します。

プロジェクトの依存関係の1つと衝突する「グローバルな」SDKライブラリが含まれていたことが判明しました。適切な有用なエラーメッセージは、テストから「メイク」ステップを削除した後にのみ表示されました。次に、重複したライブラリを削除し、テストにmakeステップを再度追加しましたが、すべて正常に動作しています。

0
Nodebody