web-dev-qa-db-ja.com

Eclipse-ソースが見つかりません

私はこの質問が以前に何度も尋ねられたことを知っていますが、提案された解決策のどれも私の問題を解決しません(または私はそれらを正しく実装していません)。

OpenFireのプラグインを開発していますが、プラグインソースにブレークポイントを設定すると、Eclipseは「ソースが見つかりません」と報告します。 JARは、OpenFireサーバーのビルドとは別にビルドされます。 JARを追加してソースコードディレクトリを指定しようとしましたが、サイコロはありません。

私が従うプロセスは次のとおりです。ブレークポイントに到達したら、[ソースルックアップパスの編集]をクリックし、[追加]をクリックします。Javaライブラリ、ユーザーライブラリ、[ユーザーライブラリ]をクリックして、ライブラリ(「JARの追加」と「外部JARの追加」の両方を試しました)、ソースコードを含むフォルダーを指定します。私も試しました。

  • 「Javaライブラリ」の代わりに「ファイルシステムディレクトリ」を選択してソースを追加する
  • 「ワークスペースフォルダ」を選択して追加
  • プロジェクトエクスプローラーで、プラグインのソースをJavaビルドパスに追加します
  • プロジェクトエクスプローラーで、JARをライブラリとして追加し、ソース添付ファイルを指定します

提案を事前に感謝します。

10
stdout

さて、解決策は反気候的だったことがわかりました。 Balderの推奨事項が機能しなかった場合、標準のOpenFireプラグインの1つをデバッグしようとしましたが、問題なく機能しました。次に、新しいプラグインを最初から作成しました。プロジェクトにソースを追加する以外に何もしなかったため(プロジェクトを右クリック-> [新規]-> [ソースフォルダー])、問題なく機能しました。 Eclipseが元のプラグインのソースの表示を拒否する理由はわかりませんが、すべてのコードとライブラリを新しいプラグインに移動すると、デバッグは期待どおりに機能します。

3
stdout

個人的には、ブレークポイントに達したときにソースフォルダーを追加するときに、EclipseJDTの経験があまりありません。私がいつもやりたいのは、デバッグする前にソースフォルダーを追加することです。

  1. プロジェクト/プロパティ/ライブラリを選択します
  2. ライブラリを選択して「編集...」 ソース添付ファイル
  3. 対応するソースフォルダまたはパッケージを含むZip/jarのいずれかを選択します

その後、仮想の「参照ライブラリ」フォルダ(内部の「JREシステムライブラリ」フォルダのすぐ下)にあるソースファイルを開くことができるはずです。プロジェクト)、またはJDTエディタ内からリンクされたクラスファイルへの参照を開くとき。ソースにアクセスできる場合は、少なくともブレークポイントで停止して、対応するソースを確認することもできるはずです。

それ以外の場合は、ソースフォルダが本当に有効かどうかをもう一度確認する必要があります。ソースフォルダまたはソースアーカイブには、ライブラリのルートパッケージの名前のフォルダが含まれている必要があります(たとえば、デフォルトのJava = JDKフォルダ内の "src.Zip"には、ルートに対応する "Java"フォルダも含まれています。不明な場合は、アーカイブを抽出し、親フォルダを選択します関心のあるパッケージの-ソースアーカイブが混乱したり、JDTと互換性がない場合があります。

これが保証されていても機能しない場合は、リンクされたソースフォルダがコンパイルされたバージョンのライブラリに対応していない可能性があります。通常、JDTはこのような不整合を問題なく処理しますが、対応するクラスファイルとはまったく異なるソースファイルを開こうとすると、問題が発生します。この場合、ライブラリの正しいソースバージョンをダウンロードするか、ソースからライブラリを再コンパイルすることをお勧めします(他のすべてが失敗した場合)。

JDTエディターを使用して参照されたソースファイルを開くことが正常に機能し、デバッグ中にブレークポイントが入力されたときにソースファイルを開くことができない場合は、クラスファイルが 欠落している可能性があります。対応するソースファイルの行番号 。この場合も、ソースからライブラリを再コンパイルする必要があります。

最後に、起動構成の[ソース]タブでソースフォルダーまたはアーカイブを指定することにより、デフォルトのソースルックアップを上書きすることもできます。ただし、ビルドパスが正しく構成されている場合は、通常、これを行う必要はありません。 Eclipseヘルプ から:

[ソース]タブは、Javaアプリケーションのデバッグ時にソースを表示するために使用されるソースファイルの場所を定義します。デフォルトでは、これらの設定は関連するプロジェクトのビルドパスから取得されます。これらの設定はここで上書きできます。

11
Balder

私は長い間この非常に厄介な問題を抱えていましたが、ついにそれを解決することができました。私の場合、JavaのTransformer.IsRuntimeCode(ProtectionDomain)関数のどこかにnullポインター例外がスローされていました。

例外がキャッチされて処理されていたので、これについて実際に知る必要はありませんでしたが、Eclipseはこれが発生するたびにデバッグを一時停止し、ソースが利用できないことを通知しました。その結果、コードの実行を継続するには、常にボタンを押し続ける必要がありました。

これが起こらないようにするために、私は:

 1. Clicked on the "Breakpoints" window at the bottom of the debugging
    screen
 2. Right clicked "NullPointerException"
 3. Unchecked "Caught"

これにより、デバッガーは、キャッチされたNullPointerException.altテキスト中にプログラムフローを一時停止できませんでした。

alt text
(ソース: SharpDetail.com

そして、これは次のようになります。

Eclipseはクラッシュしません。 Eclipseがソース(* .Java)ファイルの場所を知らず、これについて通知するメソッドにステップインしようとしています。 Eclipseにどこを見ればよいかを伝える方法は次のとおりです。に移動

Window->Preferences->Java->Installed JREs,select the JRE you are using and click Edit.

そこで、表示されているリストからすべてのjarファイルを選択し、[ソース添付ファイル...]をクリックします。

表示されるウィンドウで、JDKフォルダーにあるfille src.Zipを選択します(JDKのインストール中にチェックを外さなかった場合)。私が今使っているマシンでは、それは

C:\Program Files\Java\jdk1.7.0_07\src.Zip.

すべての変更を保存して(おそらくEclipseを再起動して)、そのエラーが再び表示されることはありません。

5
jmail

次の手順でこの問題を修正しました。

メニューウィンドウ-設定-デバッグ-ステップフィルタリングをクリックし、次の画像のようにすべてのパッケージを確認します。

(ステップフィルタリング)

次に、プロジェクトを再度デバッグします。

宜しくお願いします、

0
fr0g88

多くの場合、アプリケーションのバイナリバージョンがダウンロードされたときに、参照ライブラリとしてjarファイルをEclipse IDEに配置します。通常はビルドパスを構成することによって行います。ただし、バイナリにはソースファイルがありません。アプリケーションのバイナリバージョンとソースバージョン。

簡単な方法の1つは、プロジェクトのビルドにもmavenを使用するソースライブラリをダウンロードすることです。プロジェクトワークスペース内にある可能性があります。

これで、クラスファイル(Eclipseから、jarが展開されました)を表示しているときに、ソースが見つからないことがあります。下にボタンがあり、それをクリックすると、新しいウィンドウが開き、[外部フォルダーの追加]を選択します。

ダウンロードしたソースのsrcフォルダー(バイナリフォルダーではない)を参照し、上記のようにどこかに保存すると、そこからクラスの詳細が表示されます。

0
vimal krishna