5

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)
4

6 に答える 6

6

最上位パッケージを含むディレクトリ「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"/>
于 2008-10-10T23:47:10.273 に答える
4

正しいと思われるディレクトリを指定しても、添付されたソースでファイルが見つからないと表示されることがあります。

今回、最後のパス要素が「src」だったことに気づきました。このパス要素を削除するだけで (つまり、「org」または「com」フォルダーが配置されている実際のパスの 1 レベル上を指している)、魔法のように機能します。

どういうわけか、Eclipse はこの「src」パス要素が存在する場合はそれを暗示しているように思われ、それをソース パスに含めると、Eclipse がチョークします。またはそのようなもの。

于 2010-07-20T11:47:52.127 に答える
3

解凍した src の代わりに src.zip を添付してみてください。

于 2008-10-10T16:04:59.783 に答える
2

起動構成のソース パスに追加してみてください。

于 2008-10-10T16:53:47.470 に答える
1

ソース アーカイブへのパスにあるスペース (またはローカライズされた) シンボルに問題があると思います。単純なパスで別の場所に移動してみてください。

于 2011-04-06T11:56:44.090 に答える
1

クラスパス上のライブラリにステップインするために必要なのは、ソースを添付することだけではありません。そのライブラリは、デバッグ シンボルを使用してコンパイルする必要もあります。ほとんどの Java ライブラリはこのような方法でコンパイルおよび配布されているため、これは通常は問題になりませんが、お気づきのとおり、一部のライブラリはそうではありません。

ソースが添付されていなくても、実際に外部ライブラリにステップインできることに注意してください。行ごとのソースを表示することはできません (すべてのデバッグ情報は引き続き機能します)。

Commons HttpClient のカスタムバージョンをコンパイルすることでこの問題を「修正」することができます (それほど難しくありません)。一般的な開発手法として、サードパーティ ライブラリに足を踏み入れても、有用な情報が得られることはめったにありません。過去 10 年間でおそらく 1 回か 2 回実行しましたが、実際に目の前のジレンマの解決に近づくことはありませんでした。

于 2008-10-10T22:42:17.627 に答える