15

F3Java エディタで Typeを押すと、ステータス バーに次のメッセージが表示されることがあります。

現在のテキスト選択をエディターで開くことができません

選択範囲をクリップボードにコピーし、Ctrl+Shift+T[タイプを開く] ダイアログを開くために使用すると、値を貼り付けることができ、タイプが表示されて開くことができます。型はクラス パスにあります (コンパイル エラーはありません)。

同じプロジェクト内の他の Java エディターでは、F3 / Ctrl-Click が機能します。

「壊れた」エディターでは、内部フィールドとメソッドでのみ機能します。内部フィールドの場合、フィールドが定義されている場所でのみ機能します。フィールドが使用されているすべての場所が死んでいます。ただし、「Mark Occurrences」は機能します。

どうすればそれを取り除くことができますか?

これまでのところ、私は試しました:

  1. エディタを閉じて開く
  2. プロジェクトをきれいにする
  3. すべてのプロジェクトをクリーンアップ
  4. Maven コンテキスト メニューの「プロジェクトの更新...」
  5. エクリプスを再起動する
  6. -clean で Eclipse を再起動します。

これは、m2e 1.3.1 がインストールされた Eclipse 3.7.2 で発生します。

4

2 に答える 2

6

[更新]これは m2e と JDT のどこかにあるバグのようです。通常、複数のプロジェクト (Maven マルチ モジュール / リアクター ビルド) とモジュールがあり、相互に依存している場合に表示MAMBMCます。

MCMBの内部パラメーター化された型に依存X.Y<T>しますMA

モジュールを閉じましMB。のクラスパスではMC、これは次のようになります。

MB.jar
MA

これは、ワークスペースから Eclipse プロジェクトとしてインポートされているMB間、クラスパスに JAR として存在します。MA

この状況では、内部パラメーター化された型を必要とする.classファイルをから読み取るときに、Eclipse が混乱します。私の推測では、 からの型が必要であり、それを解析して、型への依存関係を伝え、解析を試みて、 の解析が終了していないため、 の型パラメーターを解決できないことを確認します。 .MB.jarMAMB.jarMATMB

次の 3 つの修正があります。

  1. 閉じますMA。これにより、すべてが JAR としてインポートされます。
  2. プロジェクトを開きますMB
  3. 内部型をトップレベル型にする

[年]

これが発生した場合は、絶望の度合いが高い順に次の手順を試してください。

  1. エディターを閉じて、もう一度開きます。
  2. プロジェクトをきれいにする
  3. プロジェクトを閉じて、もう一度開きます。
  4. エクリプスを再起動する

すべてが失敗した場合:

  1. 設定をエクスポートする
  2. Eclipse を終了する
  3. ワークスペースのフォルダーを削除 (または名前を変更) し.metadataます。一部のOSでは見えないフォルダですが、そこにあります。
  4. Eclipseを再起動します
  5. 設定をインポートする
  6. すべてのプロジェクトを再度インポートします。このために、ワークスペースを選択します。Eclipse はすべてのプロジェクトをダイアログに一覧表示し、それらすべてを一度に選択できます。

関連している:

  • バグ 430605 - [select] 現在のテキスト選択をエディターで開くことができない
于 2013-11-07T16:23:15.507 に答える
2

Eclipse (少なくとも Luna) には、非常に特定のワークフローに関するバグがあります。これは、この特定の質問に対する答えではないかもしれませんが、他の人にとっては役立つかもしれません。

抽出された jar (ソース コードとして) から src (インポートを実行する前に src フォルダーにフォーカスがあることを意味します) フォルダーへのインポートを実行し、ネストされたパッケージ内のネストされた *.java ファイルにブレークポイントを配置すると、ヒットしません。それらのブレークポイント。物事を機能させるには、「宣言を開く」を使用する代わりに F3 を押し続けて、ブレークポイントを設定する *.java ファイルに到達し、左端の余白をダブルクリックしてブレークポイントを追加する必要があります。次に、[実行] > [デバッグ] > [Java アプリケーション] を選択します。

于 2014-09-22T23:11:55.933 に答える