在Eclipse中附加源问题

时间:2008-10-10 15:53:54

标签: java eclipse eclipse-3.4 ganymede

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

6 个答案:

答案 0 :(得分: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"/>

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:3)

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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

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

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

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

答案 5 :(得分:1)

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