【问题标题】:How to edit .java files imported in Eclipse from a .jar file如何编辑从 .jar 文件导入到 Eclipse 中的 .java 文件
【发布时间】:2020-04-16 16:28:13
【问题描述】:

我有一个问题,也许它已经回答了,但我没能找到它,如果解决方案已经存在,我深表歉意(在删除我的线程之前让我知道它是否存在)。

问题是: 我在另一台 PC 上创建了一个程序,并将其从 Eclipse 导出为 .jar 文件。当我双击它时,它可以在我的主 PC 上运行,但是当我在 Eclipse 中导入它时,我找不到 .java 文件。所以我不能编辑它。

到目前为止我做了什么:

  1. 在eclipse中我新建了一个空项目
  2. 我已经右键单击、导入、存档文件,选择了 Eclipse 看到的 .class 文件,但是当我在 Eclipse 的 Project Explorer 中时,我找不到 main 所在的 .java 文件。我的意思是我可以单击作为程序运行并且它可以工作,但是没有 .java 文件,只有 .class 文件。我做错了什么?

那个cranes.class 应该是cranes.java。至少在我的另一台电脑上是这样。 程序运行良好,但我无法在我的主 PC 上对其进行编辑。我做错了什么?

感谢和问候

【问题讨论】:

  • .class 文件是一些.java 文件的编译版本,即字节码翻译。您可以对代码进行逆向工程(例如,IntelliJ 有一个工具可用于逆向工程代码),但如果没有更多工具,您就无法修改它,例如Byte Buddy.

标签: java eclipse import jar export


【解决方案1】:

您需要在创建jar 文件时选择Export Java source files and resources 选项,然后您的Java 文件将在从jar 文件导入项目时可用。

【讨论】:

  • 根据问题,他想在第二个项目中编辑这些文件。您的方法将与 jar(第一个项目的)一起导出源代码,但这不允许它在第二个项目中更改它。
  • 是的。那就是问题所在。我在笔记本电脑上创建了该程序,并希望将其导入桌面,以便进一步修改它。我以为我正确导出了它,但显然没有标记“导出 java 源文件”。我会试试看,如果有问题,我会告诉你。我不知道一旦导出源代码就会受到这样的保护。我想这很好,因为其他人无法窃取您的数据
【解决方案2】:

这类似于您使用其他的方式。您依赖于 Jar 文件,其中包含 java 代码的类 bytecode(已编译)。您不能直接在您正在使用的项目中编辑任何此类文件。认为您始终可以使用简单的继承概念扩展当前项目中的功能。

如果您认为这些功能微不足道,您应该更愿意在原始项目中更改 重建 jar 并使用 较新 版本的 jar .

但是,如果您对 第 3 方 库有类似的感受,您可以 从这些库 source 获取 fork 后总是进行更改 代码(如果开源)并构建和使用您的自己的版本或去 如果您对自己的 变化。

【讨论】:

    【解决方案3】:

    大多数情况下,当你构建一个 jar 文件时,你所拥有的只是 .class 文件;这些是编译 .java 文件的结果,因此无法使用文本编辑器进行编辑。

    您可以创建一个包含 .java(也称为源)文件的 jar 文件,甚至可以创建一个同时包含 .java 和 .class 文件的 jar 文件,但是如果您要求 eclipse 创建一个 jar 文件,默认情况下它只是将 .class 文件和资源文件夹中的文件放入其中,而不是 .java 文件。

    【讨论】:

      【解决方案4】:

      从问题假设,jar 是由 OP 创建的库,通过将 java 文件编译成类文件并打包/导出它们。虽然类文件无法在任何 IDE 中编辑,但可以使用第三方应用程序将它们反编译为 Java 文件。

      我个人将 IntelliJ 用于此反编译源文件由我编写

      注意:虽然这为 OP 提供了所需的功能,但如果类受版权保护,则可能会导致违规。

      正如 IntelliJ 所说,他们既不鼓励也不反对反编译类文件,决定完全由用户自行决定。

      编辑:始终建议使用原始源文件进行编辑。尝试将它们托管在 git 上,以便在需要时随时检索它

      【讨论】:

        【解决方案5】:

        不使用 Eclipse 可能更简单,而是在一台计算机上 jar/zip/tar 将您的项目目录解压缩到另一台计算机上,然后在 Eclipse 中将该文件夹作为新项目打开。

        @SanjayBharathi 建议使用 git 并在您的另一台机器上克隆 repo。

        【讨论】:

          猜你喜欢
          • 2017-08-15
          • 1970-01-01
          • 1970-01-01
          • 2010-09-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-17
          相关资源
          最近更新 更多