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

在Eclipse中附加源问题

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

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

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

    以下是.classath中的条目:

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

    尝试将它直接指向包含顶级包的目录,“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    14 年前

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

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

    不知何故,Eclipse似乎暗示了这个“src”路径元素(如果存在的话),如果您将其包含在源路径中,Eclipse将停止。或者类似的。

        3
  •  3
  •   JeeBee    16 年前

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

        4
  •  2
  •   Dave Dunkin    16 年前

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

        5
  •  1
  •   Daniel Spiewak    16 年前

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

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

        6
  •  1
  •   Evgeny P    14 年前

    推荐文章