2008-10-10 100 views
5

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

我甚至试过直接编辑.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) 
+0

您可以重新格式化.classpath条目以使其可见(标记之后)吗? – 2008-10-10 23:43:01

回答

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"/> 
2

尝试连接的src.zip而不是解压后的src?

+0

先试了一下。谢谢。 – 2008-10-10 16:17:30

2

尝试将它添加到你的启动配置的源路径。

1

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

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

您可以通过编译Commons HttpClient的自定义版本来“解决”这个问题(不是太困难),或者只是跳过整个“进入库”的想法。作为一般的开发实践,加入第三方库很少会产生有用的信息。我在过去的十年里做了也许一次或两次,既没有时间也实际上给我带来任何接近解决手头的窘境。

4

我发现,有时候,你点你认为是正确的目录,然后将其仍然声明它无法在附加的源文件中找到该文件。

这些时间,我已经意识到了最后的路径元素是“SRC”。仅仅取消此路径元素(因而确实指向这里的“组织”或“COM”文件夹所在的实际路径的上一级)奇迹般地使得它的工作。不知何故,Eclipse似乎暗示了这个“src”路径元素(如果存在),并且如果您随后将它包含在源路径中,那么Eclipse会扼杀。或类似的东西。

1

我认为,问题在空间(或本地化)simbols源路径到源文件。尝试用简单的路径将它移动到另一个地方。