【问题标题】:Attach the Source in Eclipse of a jar在 jar 的 Eclipse 中附加源代码
【发布时间】:2013-02-17 07:01:44
【问题描述】:

我像这样在我的 Eclipse 中将Student.jar 添加到我的Build Path 中-

右键项目->BuildPath->Configure Build 路径->库->添加外部罐子

Student.jar 文件中有一个名为StudentTest 的类。当我在 Eclipse 中调试代码时,我进入了 Student.jar 中的 StudentTest 类。

在那次日食之后让我看到这样-

JAR 文件S:\some_location\Student.jar 没有源附件。 您可以通过单击下面的附加源来附加源

现在我不确定我应该如何在我的 Eclipse 中附加源代码。又从哪里来?谁能一步一步告诉我我需要做什么。

更新:- 我尝试解压缩Student.jar,得到Student folder。之后我尝试将源指向Student folder 但我仍然无法正确查看该类以便我可以正确调试它,它显示了与上述相同的行为。

【问题讨论】:

  • @Kata 请解释您提供的链接将如何回答问题。
  • @Kata,我对这一行感到困惑` 根据位置填写位置路径字段,在工作区、外部文件或外部文件夹之间进行选择。单击确定。 ` 我需要选择什么位置路径。我应该解压缩Student.jar 文件夹然后指向Student folder 吗?或者是其他东西。当我尝试上述选项时,我仍然看到相同的行为。
  • @Nevzz03 对不起,我粘贴了错误的链接。这是正确的:help.eclipse.org/indigo/…
  • @Kata,看我之前的评论。
  • @Nevzz03 您需要指向 source 文件的位置,而不是已编译的 class 文件。如果您的 JAR 文件包含 .java 文件,那么您应该能够直接指向它。除非您自己明确添加这些,否则我怀疑是这种情况,因此解压缩 JAR 文件无论如何也无济于事。

标签: java eclipse buildpath


【解决方案1】:

尝试删除断点。 :)

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,并通过使用以下方案解决了它。

    1. 首先我们必须确定我们想要哪个 jar 文件的源代码以及版本号。例如“Spring Core”»“4.0.6.RELEASE”

    2. 打开https://mvnrepository.com/ 并搜索名称为“Spring Core”»“4.0.6.RELEASE”的文件。

    3. 现在 Maven 存储库将显示该 jar 文件的详细信息。

    4. 在该详细信息中,有一个选项“查看全部”,只需单击该选项即可。

    5. 然后我们将导航到 URL“https://repo1.maven.org/maven2/org/springframework/spring-core/4.0.6.RELEASE/”。

    6. 有很多选项,所以在我们的系统中选择并下载“spring-core-4.0.6.RELEASE-sources.jar”,并在eclipse中附加相同的jar文件作为源附件。

    【讨论】:

      【解决方案3】:

      我使用的项目不是基于 Spring 或 Spring Boot 的应用程序。 我有多个子项目,它们相互嵌套。 此处显示的答案支持第一级子项目。 如果我为源代码附件添加了另一个子项目,它不允许我说文件夹已存在错误。

      看起来 eclipse 已经过时了。我正在使用最新版本的 Eclipse 版本 2015-2019。 它正在扼杀我所有的时间。

      我的意图是在调试模式下运行应用程序,浏览作为外部依赖项添加的子项目(不可修改)。

      【讨论】:

        【解决方案4】:
        1. 从http://java-decompiler.github.io/下载JDEclipse
        2. 按照安装步骤进行
        3. 如果还是找不到源,请右键单击 jar 文件并从项目文件夹中选择“附加库源”选项,如下所示。

        【讨论】:

          【解决方案5】:

          使用Java Source Attacher!

          它做了 eclipse 应该做的事情——一个右键单击上下文菜单,上面写着“附加 Java 源代码”。

          它会自动为您下载源代码并将其附加。我只访问了几个它不知道的库,当发生这种情况时,它可以让您将 url 回馈给社区,这样其他人就不会对该库有任何问题。

          【讨论】:

          • 我发现了这个插件的一个主要问题。我下载了一个 maven 依赖 jar 文件,并尝试获取此 jar 的源代码;收到错误“抱歉,在我们的数据库中找不到源代码”。即使在提供 github repo URL 之后;它从未下载过源文件
          • 我在 Eclipse STS 中有一个 maven 项目。我在那里没有看到附加源选项。
          • 仅供参考,它无法附加java10源,无论如何我们可以手动附加它。
          【解决方案6】:

          我遇到了同样的问题并使用以下步骤解决了。转到 Windows-> 首选项-> 编辑器-> 文件关联

          这里点击添加 然后输入 .class 点击确定

          再次点击添加 然后输入 .classwithoughtsource 点击确定

          现在您将能够在 Windows->Preferences 的 Java 部分下看到 JadClipse 选项

          请提供如下所示的jad.exe文件路径。

          反编译器路径-C:\Users\ahr\Documents\eclipse-jee-galileo-SR2-win32\jad.exe 临时文件目录-C:\Users\ahr.net.sf.jadclipse

          点击应用

          现在您应该可以看到格式正确的类文件了。

          【讨论】:

            【解决方案7】:

            只需在你的代码中从jar中导入所需源类的包即可。

            你可以在

            中找到jar的子包

            Eclipse -- YourProject --> 引用的库 --> yourJars --> 包 --> 类

            喜欢-- 我对mysql connector jar 问题感到困扰 “源附件不包含源” 通过给出源文件夹的路径,它会显示此语句

            The source attachment does not contain the source for the file StatementImpl.class
            

            然后我只导入包含所需类的mysql connector jar 的包:

            import com.mysql.jdbc.*;
            

            然后程序运行正常。

            【讨论】:

              【解决方案8】:

              我知道现在已经很晚了,但它会对其他用户有所帮助,因为我们可以使用三种方式来完成工作......如下所示
              1)1.使用
              附加您的源代码,即右键单击项目然后属性 --> Java 构建路径 --> 在源选项卡中附加您的源代码,或者您可以删除 jar 文件并在库选项卡中附加源代码
              2. 使用eclipse源码分析器
              在eclipse市场可以下载插件java源码分析器,用于附加开源jar文件的源码。我们可以在安装插件后实现它,通过右键单击开源jar并选择附加源选项。
              3.在eclipse中使用Jadclipse你可以做到
              最后,你可以使用这个插件来实现反编译你的代码。它与您可以从 eclipse 市场下载插件并安装在您的 eclipse 中的方式类似。 在 jadclipse 视图中,您可以看到要反编译源格式的 .class 文件 注意在这里您看不到注释和隐藏的东西

              我认为在您的场景中,您可以使用选项一和选项三,我只喜欢选项三如果我想要源代码而不是调试代码。否则我将编码选项 1,因为我已经有源代码。

              【讨论】:

                【解决方案9】:

                这对我来说适用于 Eclipse-Luna:

                1. 右键单击项目下 Referenced Libraries 文件夹中的 *.jar,然后单击 Properties
                2. 使用 Java 源附件页面指向工作区位置或指向该 jar 源代码的外部位置。

                【讨论】:

                  【解决方案10】:

                  返回到您添加 jar 的位置。我相信它的库选项卡,我没有打开 Eclipse,但听起来不错。在您添加的 jar 文件的左侧应该有一个指向右侧的箭头,单击该箭头并展开 3 或 4 个选项,其中一个是库的源文件。单击它并单击编辑(我认为您也可以双击它)然后在硬盘上找到文件或文件夹,您可能必须单击应用或确定,您很高兴,与 javadoc 相同,我认为最后一个是本地库。如果你看不出来,我在里面的时候不会太在意。这就是你要问的,对吧?

                  【讨论】:

                    【解决方案11】:

                    Eclipse 显示未找到源代码,因为没有可用的源代码。您的 jar 仅包含已编译的类。

                    您需要从 jar 中导入项目并将项目添加为依赖项。

                    其他选择是去

                    转到 Properties (for the Project) -> Java Build Path -> Libraries ,选择您的 jar 文件并单击 source ,将有附加源和 Javadocs 的选项。

                    【讨论】:

                    • 感谢 Avinash,我尝试了您的第二个选项,但它仍然显示相同的内容。我所做的是 - 解压缩 jar 后我会得到一个文件夹,对吗?所以如果我指向那个文件夹,我应该能够正确地看到源代码,对吧?但这并没有发生在我身上。我无法正确查看类文件。
                    • 看不到类文件是什么意思?类文件将不是可读格式,因为它们将包含字节码。如果文件夹中没有源文件(.java),那么恐怕您唯一的选择是反编译 Java 类,然后附加源文件夹。
                    • @Nevzz03 JAR 文件是否包含任何 .java 文件?它很可能只包含 .class 文件。不过,Eclipse 要求您告诉它 .java 文件在哪里,因此 JAR 文件在这里可能没有帮助。
                    【解决方案12】:

                    .jar 文件通常只包含 .class 文件,而不是编译它们的 .java 文件。这就是为什么 eclipse 告诉你它不知道那个类的源代码。

                    将源代码“附加”到 JAR 意味着告诉 eclipse 在哪里可以找到源代码。当然,如果您不了解自己,那么该功能将无济于事。当然,您可以尝试在谷歌上搜索源代码(或查看您从何处获得 JAR 文件)。

                    也就是说,您不一定需要调试源代码。

                    【讨论】:

                    • 感谢您的建议。解压jar后我会得到一个文件夹,对吗?所以如果我指向那个文件夹,我应该能够正确地看到源代码吧?
                    • 仅当 JAR 文件包含源代码(*.java 文件)时,大多数 JAR 文件都不...
                    • @Nevzz03 你有编译成那些 .class 文件的 .java 文件吗?如果没有,那么不,您不能将源文件附加到 Eclipse,因为您没有它们。
                    • 请注意,当您使用反编译器(或使用为您执行此操作的插件,即 Eclipse 的 JAD 插件)“创建 java 文件”时,这些创建的 @987654321 中不会出现 cmets @类。因此,在调试时,调试器可能无法正确同步(即,当实际执行第 100 行时,它会指示您正在执行第 120 行)。因此,如果你能获得真正的源代码(包括 cmets)总是更好
                    • @oikonomopo 的回答应该是公认的。我希望我早点知道这个插件。
                    猜你喜欢
                    • 2011-06-22
                    • 2021-11-14
                    • 1970-01-01
                    • 2012-04-09
                    • 2015-10-18
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-11-29
                    • 1970-01-01
                    相关资源
                    最近更新 更多