在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)
有帮助吗?

解决方案

尝试将其直接指向包含顶级包的目录,“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"/>

其他提示

我发现有时,你指向你认为正确的目录,然后它仍然声明它无法找到附加源中的文件等等。

这些时候,我意识到最后一个路径元素是“src”。只需删除此路径元素(因此确实指向“org”或“com”文件夹所在的实际路径上方的一个级别)就会神奇地使其工作。

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

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

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top