web-dev-qa-db-ja.com

Eclipse Javaデバッグ:ソースが見つかりません

EclipseでJavaアプリケーションをデバッグしている間、2つのケースで "ソースが見つかりません"というエラーが表示されます。

  • すでにインポートされている別のプロジェクト内のファイルにステップインする
  • インストールされているMavenリポジトリ内のファイルにステップインする

ファイルはそこにありますが、Eclipseはその中に入りません。代わりに、「ソースを添付する」というボタンが表示されます。

アタッチしようとしたところ(変数を定義するダイアログが表示されたのですか?)、Eclipseはファイルにジャンプしましたが、デバッガはそこにある変数を調べることができませんでした。また、依存関係ごとにソースを手動で添付するのは実用的ではありません。私の場合は、何千もの依存関係ファイルがあるためです。

私はEclipse\Javaに慣れていないので、これが起こっている理由の説明+これを解決する方法は大いに役立つでしょう!

165
Jonathan

Eclipseのデバッグはプログラムによってクラス 実際にロードされた で動作します。

問題となっているクラスのように聞こえる症状は、プロジェクトでは見つかりませんでしたが、デバッグ情報のない配布jarファイルでは見つかりませんでした before 使用しているプロジェクト。

これはいくつかの理由で発生する可能性がありますが、この振る舞いを示すクラスが見つかった場所を見てください(それを識別するためにナビゲーション区画を見てください)。おそらく、このjarファイルを使用しないようにプロジェクトのビルドパスを変更し、代わりにそのプロジェクトをJVMに使用させる必要があります。

編集:2018年の時点で、Mavenのようなビルドフレームワークを使用するのが一般的であることに注意してください。ビルドパスはm2eプラグインによって管理されるので、この問題は質問された時よりも頻度が低いはずです。 Mavenとm2eを使用している場合は、必ずPreferences/Maven/"Download Artifact Sources"を有効にするか、プロジェクト、Maven/"Download Sources"を右クリックしてください。

Eclipse IDEを構成するための3つのステップ:

注:ソースルックアップパスを更新したら、デバッグセッションを停止して再開する必要があります。そうでなければ、見つからないソースを持つファイルは、引き続き「見つからないソース」と表示されます。

ソース検索の編集[ソース検索の編集...]コマンド[ソース検索の編集]を選択すると、[ソースパスの編集]ダイアログが開き、選択したデバッグターゲットのソース検索のパスを変更できます。

enter image description here

enter image description here

enter image description here

IMPORTANTこの最後のステップの後にEclipseを再起動します

260
Douglas Frari

これらの症状は、見つかったクラスに関連付けられた(または割り当てられた)ソースがない場合を完全に表しています。

  • JDKクラスのソースは「設定」>「Java」>「インストール済みのJRE」で関連付けることができます。 JRE(JDKではない)が使用されるデフォルトのJREとして検出された場合、JDKクラスには添付ソースがありません。すべてのJDKクラスがソースを提供しているわけではないことに注意してください。それらのいくつかはバイナリ形式でのみ配布されています。
  • 手動で追加されたプロジェクトのビルドパスからのクラスでは、関連するソースを手動で添付する必要があります。ソースは、Zipファイルまたはjarファイル、ワークスペース、またはファイルシステムにあります。 EclipseはZipをスキャンするので、例えばあなたのソースはアーカイブファイルのルートにある必要はありません。
  • 他のプラグイン(maven、PDEなど)からの依存関係からのクラス。この場合、ソースがどのように提供されるかはプラグイン次第です。
    • PDEでは、各プラグインに対応するXXX.sourceバンドルが必要です。これにはプラグインのソースが含まれます。より多くの情報がここで見つけることができます ここで そして ここで
    • m2Eclipseは、Maven依存関係のソースとjavadocが入手可能であれば、それらを取得することができます。この機能は有効にする必要がありますm2Eclipse設定(このオプションは "ソースとjavadocsのダウンロード"のような名前になりました。
    • 他のプラグインの場合は、それらのドキュメントを参照する必要があります。
  • プロジェクトからロードされたクラスは、プロジェクトのソースと自動的に照合されます。

しかし、クラスとそのソースを正しく設定していても、Eclipseがソースの添付を推奨している場合はどうなりますか?

これはほとんどいつもEclipseがあなたが思っているのと違う場所からクラスを見つけていることを意味します。ソースルックアップパスを調べて、間違ったクラスになる可能性がある場所を見つけます。結果に応じてパスを更新してください。

ブレークポイントに達すると、Eclipseは何も見つけません:

これは、あなたがソースルックアップパスに、現在ランタイムにロードされているクラスが含まれていない場合に起こります。クラスがワークスペース内にあっても、Eclipseはソースルックアップパスを厳密にたどり、現在デバッグされているプロジェクトの依存関係のみをアタッチするため、起動構成には見えない可能性があります。

例外はPDEのデバッグバンドルです。この場合、ランタイムは互いに依存関係を宣言する必要がない複数のプロジェクトで構成されているため、ソースルックアップパスで使用できなくても、Eclipseはワークスペース内でそのクラスを自動的に見つけます。

ブレークポイントに到達したとき、またはソースを開いたときに変数が表示されませんが、ブレークポイント行は選択されません。

つまり、ランタイムでは、JVMまたはクラス自体のどちらにも必要なデバッグ情報がありません。クラスがコンパイルされるたびに、デバッグ情報を添付することができます。クラスの記憶領域を減らすために、この情報が省略されることがあり、そのようなコードのデバッグは面倒になります。あなたの唯一のチャンスはデバッグを有効にして試して再コンパイルすることです。

Eclipseのソースビューアには、実際に実行されたものとは異なる行が表示されます。

それは時々空きスペースが同様に実行されることを示すことができます。これはあなたのソースがあなたのランタイムバージョンのクラスと一致しないことを意味します。これが不可能だと思っていても、可能です。正しいソースを設定してください。または、実行しようとしていることによっては、ランタイムが最新の変更と一致します。

45
Danail Nachev

から http://www.coderanch.com/t/587493/vc/Debugging-Eclipse-Source

「デバッグモードで実行している場合は、実行中のスレッド(スレッドタブ内)を右クリックし、ソース検索の編集を選択します。この時点で、ソースコードを含む必要なプロジェクト/ jarを追加できるはずです。」

このようにして現在のプロジェクトを追加したところ、問題が解決しました

10
Vering

私は私のEclipse mavenプロジェクトにも同様の問題を抱えていました。私はこの問題とかなり長い間戦いました、それから私はでプロジェクトを再建しようとしました

mvn clean Eclipse:eclipse

そしてそれは助けた。

注:この2つの方法は非常に異なるため、この方法を使用するとm2eプラグインが混乱します。 m2eはプロジェクトに "Maven Dependencies"という名前の仮想ノードを追加し、そこにすべての依存関係を追加するようにMavenに要求します。

一方、mvn Eclipse:eclipseは、ファイル.classpathに多くの個々のエントリを作成します。 Eclipseは手動でJARをプロジェクトに追加したかのようにそれらを処理します。

Eclipseのクラスパスがどのように機能するのかを知らない限り、この方法はお勧めできません。

9
krzysiek.ste

既存のデバッグ構成を削除して新しいものを作成します。これで問題は解決するはずです。

私は同じ問題に直面していました、私は以下の手順に従いました。

Window => Preferences => Java => Installed JREs

enter image description here

上の画面でJre1.8.0_12が選択されているのがわかります。

使用しているJREを選択してクリック Edit。今、あなたは以下のようなスクリーンを見るべきです。

enter image description here

ディレクトリをクリックしてJdkをブラウズします。下のスクリーンのように見えるはずです。 enter image description here

[OK]をクリックして完了

4
Varun

私のEclipseは私のプロジェクトのソースコードをデバッグしていないという問題がありました。 「Source code node found」という空白のページが表示されました。

[ソースコードの添付]ボタンをクリックしてください。それから "default"フォルダを削除してから[追加]をクリックしてプロジェクトの場所に移動して添付します。これは私のために働きました

3
avase

明らかに、Eclipseは依存するjarファイルのソースコードがどこにあるのかを自動的には知りません。ソースがアタッチされた後にデバッガが変数を検査できなかった理由は明らかではありません。 1つの可能性は不正確/互換性のないソースです。

あなたがMavenプロジェクトを持っていて、依存関係のソースがダウンロードされてローカルリポジトリで利用可能であると仮定して、あなたは m2Eclipse 、maven Eclipseプラグインをインストールしたいかもしれません。そしてそれがあなたの問題を解決するのに役立つかどうかを確かめてください。

2
Raghuram

私の場合の "Attach Source"では、 "Source Attachment Configuration"パネルに他のmavenプロジェクトディレクトリを追加しました。 m2リポジトリから最新バージョンのjarファイルを追加してもうまくいきません。他のmavenプロジェクトからのすべてのクラスは開くことができませんでした。

enter image description here

ここでのテストは、すべてのJavaソースを含む私のもう1つのすばらしいプロジェクトです。

1
Lucky

Eclipseにアクセス可能な依存関係のソースコードがあるかもしれません。しかしEclipseは動的にロードされるコードのソースコードを知りません。例えば。 Mavenを通して。

Mavenの場合、run-jetty-runプラグインを使用することをお勧めします。

http://code.google.com/p/run-jetty-run/

回避策として、デバッガを使って実行中のJVMに接続することもできます。そうするとコードが表示されます。あるいは、ここからEclipse用の動的ソース検索プラグインを使用することができます。

https://github.com/ifedorenko/com.ifedorenko.m2e.sourcelookup

残念ながら、スペースのあるWindowsパスに問題があるため、役に立ちませんでした。

私はEclipse Bugzillaに関する機能拡張要求を満たしました。あなたがこの問題「ソースが見つかりません」が永遠に消えることに同意するなら、ここでそれに投票してください:

https://bugs.Eclipse.org/bugs/show_bug.cgi?id=384065

ありがとうございます。

ササ

1
ssasa

私の場合は、ソースルックアップの編集やプロジェクトの追加をしてもうまくいきませんでした。プロジェクトのビルドパスを設定しました。

enter image description here

その後、JREシステムライブラリを選択して動作しました。

enter image description here

1
Germa Vinsmoke

デバッグモードで実行している場合は、スレッドから中断された後に[ソース参照の編集]をクリックします。この時点で、私たちはあなたのソースコードを含む必要なプロジェクト/ jarファイルを追加することができるはずです。このようにして現在のプロジェクトを追加したところ、問題は解決しました。ありがとう

0
Yoga

まあ、これは私のために働いたものです。私はStackOverflowで可能な限りあらゆる解決策を試しました。デバッグメニューでソースの場所を変更し、m2e Eclipseプラグインをインストールし、組み込みのMavenから変更し、run-jetty-runをインストールしても何も機能しませんでした。さて、外部の人のソースコードを見ようとしていたのではなく、自分のOWNコードを見たかったのですが、自分の書いたメソッドをMYプロジェクトに入れるたびに、 「ソースが見つかりました」エラー.

最後に専門家に尋ねた後、私の問題はEclipseが最初にしたことはデバッグスタックから見ることができるClassLoaderを呼び出すことだったということでした。私がしなければならなかったのはF6(ステップオーバー)だけで、それから私は私の元の電話に戻ってそれからF5(ステップイン)に戻りました。そして私のコードがありました。ため息...そのような単純な修正だが1時間が無駄になった。

0
Chris C

これは私のために働いた

プロジェクトを右クリックして - > Properties - > Deployment Assembly - > jarを追加します。

0
TajnosAgentos

私も同じ問題を抱えていました。私の場合は、Window-Preferences-Java-Debug [キャッチされていない例外で実行を中断]を無効にしました。それからコンソールは私に正しいエラーを示しました:私のMySqlユーザーはデータベースにアクセスする特権を持っていませんでした。 このトピックによると。

0
Alex

情報:いくつかのプロジェクトでmaven(pom.xml)を使用する場合、これは可能な解決策です。

もしあなたがmavenを使って作業しているなら、あなたが対応しているpom.xml(例えば1.0.1-SNAPSHOT)の中にあなたが取っているバージョンを確かめてください。あなたのコードが最新であることは可能かもしれませんが、あなたのpom.xmlの依存関係はまだ古いJARの/ Snapshotsを(古いコードで)取っています。

問題を見つける:

  • 対応するファイルをデバッグしてみてください。
  • そのため、該当するコード領域にブレークポイントを設定してください。
  • "source not found"が表示されたら、必ず正しいプロジェクト(.Javaファイルがある場所)にバインドしてください。
  • コンパイル.classファイルがIDEエディタで開きます。
  • 対応するJAR /スナップショットを見つけるには、[エディタとリンク]をクリックします。
  • このJARが最新のものであることを確認してください。おそらくもっと新しいものがあるでしょう。その場合は、pom.xmlに最新のバージョン番号を記入してください。
  • それからMavenの更新を行い、正しいプロジェクトディレクトリにビルドします(例えば "mvn clean install -U")。
0
Birol Efe

私の場合は、他の参照先プロジェクトのMavenバージョンがテストプロジェクトのバージョンと一致しませんでした。それらが同じになれば、問題は消えた。

0
maarten

自動ダウンロードしてJARにソースコードを添付したい場合は、このEclipseプラグインを使用してみてください Java Source Attacher

enter image description here

0
KrishPrabakar

初心者向け、

JarファイルがまだEclipseワークスペースに含まれていないプロジェクトの一部である可能性があります。

そのためには、jarファイルのプロジェクト名を知る必要があります。たとえば、そのabc - 18.0.0-SNAPSHOT.jarとすると、ワークスペースに含めることになっているプロジェクトはabcです。 。

0
Shobhit Mittal

Tomcatプロジェクトの私の場合は、ここでプロジェクトをチェックしました。ウィンドウ - 設定 - Tomcat - ソースパス - Javaプロジェクトをソースパスに追加する

0
user3132194

私はEclipseでGlassfishサーバーをデバッグすることに関連した問題を抱えていました。これは、異なるリポジトリからソースコードをロードすることによってもたらされました(SVNからGitHubに変更)。その過程で、間違ったコンパイル済みクラスがGlassfishサーバーによって使用されていたため、ソースと実行時間が空行に表示されるブレークポイントと同期しなくなります。

これを解決するには、classesディレクトリのトップフォルダの名前を変更するか削除します。Glassfishは、クラスファイルを正しくコンパイルされたバージョンで更新することを含めて、クラスディレクトリツリー全体を再作成します。

Classesディレクトリは、/ workspace/glassfish3122eclipsedefaultdomain/eclipseApps/<your Web Application>/WEB-INF/classesにあります。

0
user3035873

クリック - >ソース検索パスの編集

その後

クリック - >追加最後にJavaプロジェクトを選択し、プロジェクトパスを選択します。

ソース: https://www.youtube.com/watch?v=IGIKPY6q1Qw

0
Oguzhan Cevik

EclipseまたはSTSを使用している場合は、GC(GrepCode Plugin)をインストールして使用してください。GrepCodeが正常に機能するように、ソースの.zipファイルをプロジェクトパスに添付する必要はありません。

0
danielad

Eclipse 2019-03(4.11.0)でも同じ問題があり、デバッグモードで直接起動するのではなく、リモートデバッグを介してデバッグを行うことによってのみ解決できました。

0
Kai

データセットを含むExcelファイルを処理し、それを.csvファイルに変換するためのJavaコードの作成中にこの問題が発生しました。問題はjarファイル自体でした。必要なjarファイルを一つずつ(古いリリース)ダウンロードして私のプロジェクトに追加した後、 "source not found"エラーは消えました。たぶんあなたはあなたのjarファイルをチェックすることができます。これが役立つことを願っています。

0
simin

Eclipseでデバッグ構成に行き、以下の目標を使ってアプリケーションを実行します。

- Dmaven.surefire.debug

例えば

-Dmaven.surefire.debug exec:Java

0