5

在 Eclipse (Ganymede) 中,我正在调试一些使用 Apache Commons HttpClient 的代码,并希望进入 HttpClient 代码。我已经下载了源代码并尝试以正常方式附加它(CTRL-单击方法名称并使用附加源按钮)。我尝试将两者都附加为外部文件和外部文件夹,但均未成功。我之前已经附加了源代码,没有任何问题,目前可以成功进入 Hibernate 源代码。

我什至尝试直接编辑 .classpath 文件以手动添加源路径。仍然没有运气。刷新项目、进行干净的构建、关闭并重新打开 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”。对我有用的是创建一个新的 src zip 文件,其中包含“org”文件夹及其下的所有内容。

这是我的 .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”文件夹所在的实际路径上方的一层)就可以神奇地使其工作。

不知何故,Eclipse 似乎暗示了这个“src”路径元素(如果存在),如果你将它包含在源路径中,Eclipse 就会窒息。或类似的东西。

于 2010-07-20T11:47:52.127 回答
3

尝试附加 src.zip 而不是解压缩的 src?

于 2008-10-10T16:04:59.783 回答
2

尝试将其添加到启动配置的源路径中。

于 2008-10-10T16:53:47.470 回答
1

附加源并不是进入类路径上的库所需要的全部;该库还必须使用调试符号进行编译。这通常不是问题,因为大多数 Java 库都是以这种方式编译和分发的,但正如您所发现的,其中一些不是。

有趣的是,即使没有附加源代码,您实际上也可以进入外部库,只是看不到逐行源代码(所有调试信息仍然有效)。

您可以通过编译 Commons HttpClient 的自定义版本(不太难)来“解决”这个问题,或者只是跳过整个“步入库”的想法。作为一般的开发实践,进入第三方库很少会产生有用的信息。在过去的十年里,我可能做过一次或两次,但这两次都没有真正让我更接近解决手头的困境。

于 2008-10-10T22:42:17.627 回答
1

我认为,源存档路径中的空间(或本地化)符号问题。尝试用简单的路径将其移动到另一个地方。

于 2011-04-06T11:56:44.090 回答