Eclipseでソースの問題を添付
-
08-07-2019 - |
質問
Eclipse(Ganymede)では、Apache Commons HttpClientを使用するコードをデバッグしており、HttpClientコードにステップインしたいと考えています。ソースコードをダウンロードし、通常の方法でアタッチしようとしました(メソッド名をCtrlキーを押しながらクリックし、[ソースのアタッチ]ボタンを使用します)。外部ファイルと外部フォルダーの両方を添付しようとしましたが、成功しませんでした。以前に問題なくソースを添付しましたが、現在Hibernateソースコードに正常にステップインできます。
.classpathファイルを直接編集して、sourcepathを手動で追加することさえ試みました。まだ運がありません。プロジェクトを更新し、クリーンビルドを実行し、Eclipseを閉じて再度開いても、問題は解決しません。不満なことに、Eclipseはエラーメッセージを提供しません。ソースを添付するだけではありません。
.claspathのエントリは次のとおりです。
<!-- Hibernate. Works -->
<classpathentry kind="lib" path="/myEAP/EarContent/APP-INF/lib/hibernate.jar" sourcepath="D:/Data/Download/hibernate-3.2.2.ga/hibernate-3.2/src"/>
<!-- Commons HttpClient. Will not attach -->
<classpathentry kind="lib" path="/myEAP/EarContent/APP-INF/lib/commons-httpclient.jar" sourcepath="D:/Data/Download/commons-httpclient-3.1/src/java"/>
パスをD:/Data/Download/commons-httpclient-3.1/srcに変更しようとしましたが、どちらも機能しません。
ディレクトリ構造は次のとおりです。
D
Data
Download
commons-httpclient-3.1
src
java
org
apache
commons
httpclient
AutoCloseInputStream.java
... (and so forth)
解決
トップレベルのパッケージを直接含むディレクトリ、「D:/Data/Download/commons-httpclient-3.1/src/java」をポイントしてみてください。あなたのために。私にとってうまくいったのは、「org」を含む新しいsrc zipファイルを作成することでした。フォルダとその下のすべて。
これが役立つ場合の、私の.classpathエントリ(これは私にとっては有効です):
<classpathentry kind="lib" path="/blib/java/commons-httpclient-3.1/commons-httpclient-3.1.jar" sourcepath="/blib/java/commons-httpclient-3.1/commons-httpclient-3.1-src.zip"/>
他のヒント
ときどき、正しいと思われるディレクトリをポイントしても、添付のソースにあるファイルからファイルが見つからないと表示されることがあります。
今回は、最後のパス要素が&quot; src&quot;であることを認識しました。このパス要素を削除するだけで(実際、&quot; org&quot;または&quot; com&quot;フォルダーがある実際のパスの1レベル上を指すように)魔法のように動作します。
どういうわけか、Eclipseはこの&quot; src&quot;を暗示しているようです。 path要素が存在する場合、それをソースパスに含めると、Eclipseはチョークします。またはそのようなもの。
解凍されたsrcの代わりにsrc.zipを添付してみてください
起動構成のソースパスに追加してみてください。
クラスパス上のライブラリにステップインするために必要なのは、ソースの添付だけではありません。そのライブラリもデバッグシンボルでコンパイルする必要があります。ほとんどのJavaライブラリはこのような方法でコンパイルおよび配布されるため、これは通常は問題ではありませんが、ご存じのとおり、それらの一部はそうではありません。
ソースが接続されていなくても、実際に外部ライブラリにステップインできることに注意するのは興味深いことです。行ごとのソースは表示されません(すべてのデバッグ情報が引き続き機能します)。
「修正」できますこの問題は、Commons HttpClientのカスタムバージョンをコンパイルすること(それほど難しくない)、または単に「ライブラリにステップインする」全体をスキップすることで解決できます。アイディア。一般的な開発方法として、サードパーティのライブラリにステップインしても有用な情報が得られることはほとんどありません。私は過去10年間に1回か2回やったことがありますが、どちらもジレンマの解決に近づいていませんでした。
ソースアーカイブへのパスにあるスペース(またはローカライズされた)シンボルに問題があると思います。単純なパスで別の場所に移動してみてください。