代码之家  ›  专栏  ›  技术社区  ›  Paul Croarkin

Eclipse中的附加源代码问题

  •  5
  • Paul Croarkin  · 技术社区  · 17 年前

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

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

    以下是.classpath中的条目:

    <!-- 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 回复  |  直到 15 年前
        1
  •  6
  •   David L    17 年前

    尝试将其直接指向包含顶级包的目录,“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
  •  4
  •   stolsvik    16 年前

    我发现,有时,你指向你认为正确的目录,然后它仍然表示在附加的源代码blah-blah中找不到该文件。

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

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

        3
  •  3
  •   JeeBee    17 年前

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

        4
  •  2
  •   Dave Dunkin    17 年前

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

        5
  •  1
  •   Daniel Spiewak    17 年前

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

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

    你可以通过编译Commons HttpClient的自定义版本来“修复”这个问题(不太困难),或者跳过整个“进入库”的想法。作为一般的开发实践,进入第三方库很少会产生有用的信息。在过去的十年里,我可能做过一两次,但这两次都没有让我更接近解决眼前的困境。

        6
  •  1
  •   Evgeny P    15 年前

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