在Eclipse中附加源问题

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

我甚至尝试直接编辑.classpath文件以手动添加源路径。 仍然没有运气。 刷新项目,进行干净的构建,关闭和重新打开Eclipse并不能解决问题。 令人沮丧的是,Eclipse没有提供任何错误消息; 它只是没有附加源。

以下是.claspath中的条目:

    

我已经尝试将路径更改为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”。 对我有用的是创建一个新的src zip文件,其中包含“org”文件夹及其下的所有内容。

这是我的.classpath条目(适用于我),以防它有用:

  

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

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

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

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

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

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

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

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

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