EclipseでJavaアプリケーションをデバッグしている間、2つのケースで "ソースが見つかりません"というエラーが表示されます。
ファイルはそこにありますが、Eclipseはその中に入りません。代わりに、「ソースを添付する」というボタンが表示されます。
アタッチしようとしたところ(変数を定義するダイアログが表示されたのですか?)、Eclipseはファイルにジャンプしましたが、デバッガはそこにある変数を調べることができませんでした。また、依存関係ごとにソースを手動で添付するのは実用的ではありません。私の場合は、何千もの依存関係ファイルがあるためです。
私はEclipse\Javaに慣れていないので、これが起こっている理由の説明+これを解決する方法は大いに役立つでしょう!
Eclipseのデバッグはプログラムによってクラス 実際にロードされた で動作します。
問題となっているクラスのように聞こえる症状は、プロジェクトでは見つかりませんでしたが、デバッグ情報のない配布jarファイルでは見つかりませんでした before 使用しているプロジェクト。
これはいくつかの理由で発生する可能性がありますが、この振る舞いを示すクラスが見つかった場所を見てください(それを識別するためにナビゲーション区画を見てください)。おそらく、このjarファイルを使用しないようにプロジェクトのビルドパスを変更し、代わりにそのプロジェクトをJVMに使用させる必要があります。
編集:2018年の時点で、Mavenのようなビルドフレームワークを使用するのが一般的であることに注意してください。ビルドパスはm2eプラグインによって管理されるので、この問題は質問された時よりも頻度が低いはずです。 Mavenとm2eを使用している場合は、必ずPreferences/Maven/"Download Artifact Sources"を有効にするか、プロジェクト、Maven/"Download Sources"を右クリックしてください。
Eclipse IDEを構成するための3つのステップ:
注:ソースルックアップパスを更新したら、デバッグセッションを停止して再開する必要があります。そうでなければ、見つからないソースを持つファイルは、引き続き「見つからないソース」と表示されます。
ソース検索の編集[ソース検索の編集...]コマンド[ソース検索の編集]を選択すると、[ソースパスの編集]ダイアログが開き、選択したデバッグターゲットのソース検索のパスを変更できます。
IMPORTANTこの最後のステップの後にEclipseを再起動します。
これらの症状は、見つかったクラスに関連付けられた(または割り当てられた)ソースがない場合を完全に表しています。
しかし、クラスとそのソースを正しく設定していても、Eclipseがソースの添付を推奨している場合はどうなりますか?
これはほとんどいつもEclipseがあなたが思っているのと違う場所からクラスを見つけていることを意味します。ソースルックアップパスを調べて、間違ったクラスになる可能性がある場所を見つけます。結果に応じてパスを更新してください。
ブレークポイントに達すると、Eclipseは何も見つけません:
これは、あなたがソースルックアップパスに、現在ランタイムにロードされているクラスが含まれていない場合に起こります。クラスがワークスペース内にあっても、Eclipseはソースルックアップパスを厳密にたどり、現在デバッグされているプロジェクトの依存関係のみをアタッチするため、起動構成には見えない可能性があります。
例外はPDEのデバッグバンドルです。この場合、ランタイムは互いに依存関係を宣言する必要がない複数のプロジェクトで構成されているため、ソースルックアップパスで使用できなくても、Eclipseはワークスペース内でそのクラスを自動的に見つけます。
ブレークポイントに到達したとき、またはソースを開いたときに変数が表示されませんが、ブレークポイント行は選択されません。
つまり、ランタイムでは、JVMまたはクラス自体のどちらにも必要なデバッグ情報がありません。クラスがコンパイルされるたびに、デバッグ情報を添付することができます。クラスの記憶領域を減らすために、この情報が省略されることがあり、そのようなコードのデバッグは面倒になります。あなたの唯一のチャンスはデバッグを有効にして試して再コンパイルすることです。
Eclipseのソースビューアには、実際に実行されたものとは異なる行が表示されます。
それは時々空きスペースが同様に実行されることを示すことができます。これはあなたのソースがあなたのランタイムバージョンのクラスと一致しないことを意味します。これが不可能だと思っていても、可能です。正しいソースを設定してください。または、実行しようとしていることによっては、ランタイムが最新の変更と一致します。
から http://www.coderanch.com/t/587493/vc/Debugging-Eclipse-Source
「デバッグモードで実行している場合は、実行中のスレッド(スレッドタブ内)を右クリックし、ソース検索の編集を選択します。この時点で、ソースコードを含む必要なプロジェクト/ jarを追加できるはずです。」
このようにして現在のプロジェクトを追加したところ、問題が解決しました
私は私のEclipse mavenプロジェクトにも同様の問題を抱えていました。私はこの問題とかなり長い間戦いました、それから私はでプロジェクトを再建しようとしました
mvn clean Eclipse:eclipse
そしてそれは助けた。
注:この2つの方法は非常に異なるため、この方法を使用するとm2eプラグインが混乱します。 m2eはプロジェクトに "Maven Dependencies"という名前の仮想ノードを追加し、そこにすべての依存関係を追加するようにMavenに要求します。
一方、mvn Eclipse:eclipse
は、ファイル.classpath
に多くの個々のエントリを作成します。 Eclipseは手動でJARをプロジェクトに追加したかのようにそれらを処理します。
Eclipseのクラスパスがどのように機能するのかを知らない限り、この方法はお勧めできません。
既存のデバッグ構成を削除して新しいものを作成します。これで問題は解決するはずです。
私のEclipseは私のプロジェクトのソースコードをデバッグしていないという問題がありました。 「Source code node found」という空白のページが表示されました。
[ソースコードの添付]ボタンをクリックしてください。それから "default"フォルダを削除してから[追加]をクリックしてプロジェクトの場所に移動して添付します。これは私のために働きました
明らかに、Eclipseは依存するjarファイルのソースコードがどこにあるのかを自動的には知りません。ソースがアタッチされた後にデバッガが変数を検査できなかった理由は明らかではありません。 1つの可能性は不正確/互換性のないソースです。
あなたがMavenプロジェクトを持っていて、依存関係のソースがダウンロードされてローカルリポジトリで利用可能であると仮定して、あなたは m2Eclipse 、maven Eclipseプラグインをインストールしたいかもしれません。そしてそれがあなたの問題を解決するのに役立つかどうかを確かめてください。
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
ありがとうございます。
ササ
デバッグモードで実行している場合は、スレッドから中断された後に[ソース参照の編集]をクリックします。この時点で、私たちはあなたのソースコードを含む必要なプロジェクト/ jarファイルを追加することができるはずです。このようにして現在のプロジェクトを追加したところ、問題は解決しました。ありがとう
まあ、これは私のために働いたものです。私はStackOverflowで可能な限りあらゆる解決策を試しました。デバッグメニューでソースの場所を変更し、m2e Eclipseプラグインをインストールし、組み込みのMavenから変更し、run-jetty-runをインストールしても何も機能しませんでした。さて、外部の人のソースコードを見ようとしていたのではなく、自分のOWNコードを見たかったのですが、自分の書いたメソッドをMYプロジェクトに入れるたびに、 「ソースが見つかりました」エラー.
最後に専門家に尋ねた後、私の問題はEclipseが最初にしたことはデバッグスタックから見ることができるClassLoaderを呼び出すことだったということでした。私がしなければならなかったのはF6(ステップオーバー)だけで、それから私は私の元の電話に戻ってそれからF5(ステップイン)に戻りました。そして私のコードがありました。ため息...そのような単純な修正だが1時間が無駄になった。
これは私のために働いた
プロジェクトを右クリックして - > Properties - > Deployment Assembly - > jarを追加します。
私も同じ問題を抱えていました。私の場合は、Window-Preferences-Java-Debug [キャッチされていない例外で実行を中断]を無効にしました。それからコンソールは私に正しいエラーを示しました:私のMySqlユーザーはデータベースにアクセスする特権を持っていませんでした。 このトピックによると。
情報:いくつかのプロジェクトでmaven(pom.xml)を使用する場合、これは可能な解決策です。
もしあなたがmavenを使って作業しているなら、あなたが対応しているpom.xml(例えば1.0.1-SNAPSHOT)の中にあなたが取っているバージョンを確かめてください。あなたのコードが最新であることは可能かもしれませんが、あなたのpom.xmlの依存関係はまだ古いJARの/ Snapshotsを(古いコードで)取っています。
問題を見つける:
私の場合は、他の参照先プロジェクトのMavenバージョンがテストプロジェクトのバージョンと一致しませんでした。それらが同じになれば、問題は消えた。
自動ダウンロードしてJARにソースコードを添付したい場合は、このEclipseプラグインを使用してみてください Java Source Attacher
初心者向け、
JarファイルがまだEclipseワークスペースに含まれていないプロジェクトの一部である可能性があります。
そのためには、jarファイルのプロジェクト名を知る必要があります。たとえば、そのabc - 18.0.0-SNAPSHOT.jarとすると、ワークスペースに含めることになっているプロジェクトはabcです。 。
Tomcatプロジェクトの私の場合は、ここでプロジェクトをチェックしました。ウィンドウ - 設定 - Tomcat - ソースパス - Javaプロジェクトをソースパスに追加する
私はEclipseでGlassfishサーバーをデバッグすることに関連した問題を抱えていました。これは、異なるリポジトリからソースコードをロードすることによってもたらされました(SVNからGitHubに変更)。その過程で、間違ったコンパイル済みクラスがGlassfishサーバーによって使用されていたため、ソースと実行時間が空行に表示されるブレークポイントと同期しなくなります。
これを解決するには、classesディレクトリのトップフォルダの名前を変更するか削除します。Glassfishは、クラスファイルを正しくコンパイルされたバージョンで更新することを含めて、クラスディレクトリツリー全体を再作成します。
Classesディレクトリは、/ workspace/glassfish3122eclipsedefaultdomain/eclipseApps/<your Web Application>/WEB-INF/classesにあります。
クリック - >ソース検索パスの編集
その後
クリック - >追加最後にJavaプロジェクトを選択し、プロジェクトパスを選択します。
EclipseまたはSTSを使用している場合は、GC(GrepCode Plugin)をインストールして使用してください。GrepCodeが正常に機能するように、ソースの.zipファイルをプロジェクトパスに添付する必要はありません。
Eclipse 2019-03(4.11.0)でも同じ問題があり、デバッグモードで直接起動するのではなく、リモートデバッグを介してデバッグを行うことによってのみ解決できました。
データセットを含むExcelファイルを処理し、それを.csvファイルに変換するためのJavaコードの作成中にこの問題が発生しました。問題はjarファイル自体でした。必要なjarファイルを一つずつ(古いリリース)ダウンロードして私のプロジェクトに追加した後、 "source not found"エラーは消えました。たぶんあなたはあなたのjarファイルをチェックすることができます。これが役立つことを願っています。
Eclipseでデバッグ構成に行き、以下の目標を使ってアプリケーションを実行します。
- Dmaven.surefire.debug
例えば
-Dmaven.surefire.debug exec:Java