web-dev-qa-db-ja.com

IntelliJコード補完が新しいJava=クラスで機能しない

IntelliJ IDEA 13は、私のローカルセットアップで非常に奇妙な動作を示し始めました。

つまり、既存のプロジェクトに追加された新しいJavaクラスでは、Code Completion 動作しません。そのため、新しいクラスで任意のタイプのオブジェクト変数を宣言し、その変数の名前を入力し、その後にドット(。)を入力すると、対応するオブジェクトのメソッドについて提案が表示されません。

たとえば、宣言した後

File f = new File("/home");

入力f.は、Fileクラスのすべてのメソッドのリストを表示せず、1つを選択します。実際には、ドット(。)を入力すると、提案は表示されず、IDEウィンドウの左下(ステータスバー))に「識別子が必要です。識別子が必要です。 。 "が表示されます。場合によっては、無関係なコンポーネントまたはライブラリからの完全に無関係なメソッドの長いリストが提案されます。

不思議なことに、Code Completion上記の宣言が既存のクラスのいずれかで発生した場合、期待どおりに機能します。

この動作は、マシンの再起動、IDE再起動、プロジェクトの再インポート、終了/再開、または再構築のさまざまな組み合わせを行った後も続きます。

何か案は?

18
PNS

フォロワーの場合、私を助けた1つのこと(オートコンプリートはキャストフィールドインスタンスの表示のみを示したなど)が、子に正しくリンクされていないMavenモジュールを開いた(コメントアウトされたサブモジュールセクションがあった)ため、IntelliJはmaven Javaファイルは基本的に「テキスト」ファイルとして、プロジェクトペインのアイコンに小さな「j」が付いています。ルートmaven pom.xmlファイルを修正して、モジュールとして子ディレクトリを含め、ほら、それらは本当のように扱われますJavaファイルが再び、うーん!

13
rogerdpack

ファイル->プロジェクト構造->モジュールで、すべてのソースディレクトリにマークを付けてください。

22
Hubert

IntelliJの実行中に省電力モードになっていないことを確認します([ファイル] [メニュー]-> [省電力モード]がオンになっているかどうか)。省電力モードが有効になっている場合、IntelliJは コード完了を含むバックグラウンドタスク を実行しません。

20
Makoto

IntelliJ Ultimate 2017.1を使用していますが、同様の問題が発生しました。 Mavenプロジェクトは、Selenium APIを使用しようとしていましたが、intellisenseが相対メソッドをポップアップしませんでした。

これが私が私の問題を解決した方法です:

プロジェクトのsrcフォルダを右クリックします
Mark Directory Asを選択し、次にSources Rootを選択します

9
zoe jiang

私はこれと同じ問題を抱えていましたが、それは私がソースルートとしてマークされたフォルダを持っていなかったことが原因でした。

Srcディレクトリを右クリックし、[ディレクトリに次のマークを付ける]> [ソースルート]を選択します。

4
hurlman

フォルダー.ideaとファイル* .imlをルートフォルダーに切り取り、プロジェクトの別の場所に貼り付けます。プロジェクトを再度開くと、自動インポートが再び魔法のように機能します。

3
İlker

これはIntelliJ 13ではなく、より新しい2017.1.1コミュニティバージョンです。この回答をここに追加して、Gradle構成にルーツを持つ原因から他の人が恩恵を受けるようにします。

さて、私の場合もオートコンプリート、Generate Overrideメソッドやその他の機能が機能していませんでした。私が理解したのは、私のプロジェクト設定で、gradleモジュールの複数の構成があったことです。残りのモジュールをクリーンアップし、そのプロジェクトに必要な(テストを除いて)唯一のモジュールを保持した瞬間、すべての動作は正常に戻りました。

また、このようなGradleプロジェクトの場合は、すべてのsourceSetルートフォルダーとSourceフォルダーをマークすることを忘れないでください。

編集:sourceSetごとに複数の構成を作成せず、gradleモジュールをインポートする場合は、インポート画面で、[sourcesetごとにモジュールを作成する]フラグも無効にする必要があります。これがないと、モジュールをインポートした後で複数のモジュールを削除する必要がありました。 Create module per sourceSet

問題には2つの理由が考えられます

  1. ソースフォルダーがビルドで適切に構成されていないJavaビルドパス。ソースフォルダーが適切に構成されていない場合、オートコンプリートは必要なクラス定義を取得せず、プロジェクトのオートコンプリートは失敗します。
  2. 'Windows>設定> Java>エディター>コンテンツアシスト>詳細設定)のデフォルトオプションの復元
2
user1792551

プロジェクトを右クリック->フレームワークサポートを追加-> Mavenを選択-> [OK]をクリック

2
BludShot

私にとってうまくいった唯一のことは、IntelliJ(Ubuntu上)を殺して、それを再開することでした。

2
Andrei C

Eclipse-cheクライアント拡張のコーディング中にこの問題に直面していました。 Eclipse cheモジュールはすべてmavenタイプです。私のクライアント拡張プロジェクトは、親プロジェクトから独立してコンパイルできる独立したモジュールでした。 Intellijに同じ構造をインポートしたとき、クライアント側の拡張プロジェクトは提案をしていませんでした。 client-extensionプロジェクトを親モジュールに含めた後(pom.xmlに追加)、提案が表示され始めました。

1
Purushothaman

どういうわけかjdkが依存関係として設定されていないgroovyプロジェクトがあったので、jdkクラスはオートコンプリートしませんでした。

修正:

  1. プロジェクト構造
  2. モジュール
  3. (あなたのモジュール)
  4. タブの依存関係。
  5. モジュールSDKフィールドに、jdkを追加します。
1
Sander

これは、srcディレクトリを「ソースルート」としてマークするのに役立ちました。 enter image description here

1
SilverC4t

これは、親プロジェクトのpomに追加されていないモジュールで発生していました(意図的にそれを行っていました)。そのため、pom.xml問題のあるモジュールをクリックして、

enter image description here

オートコンプリートが追加され、それに加えて、右上のmavenタブにモジュールが個別のプロジェクトとして表示されます。

1
mcvkr

私は同様の問題を抱えていましたが、このトピックでは何も助けになりませんでした。

だから、私は最終的にそれを機能させ、IntelliJのキャッシュをクリアして再起動しました。

ファイル>キャッシュの無効化/再起動...> Invalidate Cache and Restart(ボタン)

enter image description here

1
miljon

設定>エディター>一般>自動インポート> Java>インポートと完了から除外からパッケージを削除します

私はこの問題に遭遇しました。この投稿の解決策はどれも機能しませんでしたが、プロジェクトのパッケージを「インポートと完了から除外」設定に誤って入れてしまったため、修正することができました。

change your intellij settings to include the package for completion

1
activedecay