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