【问题标题】:Adding a class to an exisiting Jar files - Eclipse将类添加到现有 Jar 文件 - Eclipse
【发布时间】:2013-11-01 14:31:06
【问题描述】:

我认为这是一个非常简单的问题,但我是新手,不知道该怎么做。所以我在我的一个项目中添加了一个外部 jar 文件,并且能够使用 JAD 反编译这些类以查看一些类文件,问题是我想在同一个 JAR 文件中的一个目录中添加一个新类,编译它并更新jar文件。我在谷歌上搜索,想出了一个“ANT 构建文件”之类的东西,但不确定它是如何工作的?

谢谢!

【问题讨论】:

  • 因此,如果您已反编译并将源代码添加到项目中,您可以通过 File > Export > Java > Jar 选项将其导出为 jar 和新类

标签: java eclipse ant jar


【解决方案1】:

首先,我会检查该 JAR 的开发者是否已向这些类提供了源代码。这减少了 JAD 无法完全反编译所有类信息的可能性。

但是,一旦您拥有所有 .java 文件(包括您更改或添加的类),您可以让 eclipse 构建 jar 文件,如下所示:

1.) 编译 .java 文件(Project -> clean..)

2.) 文件 -> 导出 -> Java -> Jar 文件(点击下一步)

3.) 选择属于 jar 的任何内容,输入名称并单击完成(注意表示导出生成的类文件和资源的复选框)。

关于 Ant/ Maven 和其他东西:这些只是帮助您的工具。您可以通过打开控制台来归档相同的结果并使用 javac.exe 进行编译,您可以使用 ant 或 maven 来编译您的类。只是配置问题。

我建议你在这里跳过 Ant,直接做 Maven in 5 Minutes 教程:)

【讨论】:

  • 'Compile the .java files (Project -> clean..)',我究竟要编译什么我创建的新类文件?
  • .java 文件和 .class 文件之间的区别。您使用 JAD 将 .class 文件反编译回 .java 文件。然后你想添加一个自己的类,它也是 .java。但是要取回“原始”可用 jar,您必须先将所有 .java 文件编译为 .class 文件,然后再将它们打包成 .jar 文件。立即尝试导出,我敢打赌 eclipse 也会编译它们(Project/clean 也只是一个触发器,让它构建你的工作区,然后编译你的所有 .java 文件)
【解决方案2】:

您的方法有效。但是你可以有两个具有相同名称和包的类。这将消除更新 jar 文件的必要性。

您必须设置加载顺序以确保将使用您的新修改版本而不是 jar 文件中的版本。 Possible to use two java classes with same name and same package?

在任何调整和类加载器之前,测试这种方法,可能是默认的类加载器行为会做你想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 2013-09-23
    相关资源
    最近更新 更多