在jar中更新.class文件

时间:2009-11-03 12:51:21

标签: java eclipse jar

我想用新的 jar 更新 .class 文件。最简单的方法是什么,特别是在Eclipse IDE中?

11 个答案:

答案 0 :(得分:64)

This tutorial详细说明了如何更新jar文件

jar uf jar-file input-file(s)

其中'u'表示更新。

答案 1 :(得分:11)

您想自动或手动完成吗?如果手动,JAR文件实际上只是一个ZIP文件,因此您应该可以使用任何ZIP阅读器打开它。 (您可能需要先更改扩展名。)如果要通过Eclipse自动更新JAR文件,您可能需要查看Eclipse中的Ant支持并查看zip task

答案 2 :(得分:10)

只需使用7-Zip或Winzip将新类文件拖放到JAR即可。您甚至可以使用父文件夹图标修改WAR文件中包含的JAR文件,并在7zip检测到内部文件已被修改时单击“确定”

答案 3 :(得分:6)

Jar是一个存档,您可以在自己喜欢的文件管理器中自行替换文件(例如Total Commander)。

答案 4 :(得分:6)

  1. 使用jar -xvf将文件解压缩到目录。
  2. 进行更改并替换类。
  3. 使用jar -cvf创建新的jar文件。

答案 5 :(得分:2)

JAR文件只是伪装的.zip文件。压缩文件夹包含.class个文件。

如果您使用的是macOS:

  1. 将文件重命名为“.zip”扩展名。例如myJar.jar - > myJar.zip。
  2. 解压缩'.zip'(双击它)。将出现名为“myJar”的新文件夹
  3. 使用新的.class文件查找并替换.class文件。
  4. 选择文件夹'myJar'的所有内容,然后选择'压缩x项'。 请勿将文件本身打包,仅列入其内容
  5. 其他 - 在macOS上编译单个.class文件,参考原始jar

    1. 创建一个包含代码的文件myClass.java。
    2. 从Spotlight打开终端。
    3. javac -classpath originalJar.jar myClass.java这将创建一个名为myClass.class的编译类。
    4. 从这里开始,按照上述步骤操作。您也可以使用Eclipse来编译它,只需通过右键单击项目“Build Path” - >引用原始jar。 '添加外部档案'。从这里你应该能够将它编译为jar,并使用上面的zip技术从jar中检索类。

答案 6 :(得分:0)

1)您可以将文件解压缩到名为

的文件夹中
  

jarname.jar

然后替换文件夹中的文件,如果你在调试时经常更新类,那么很方便

2)你可以提取jar替换文件,然后将jar重新上传

3)打开带有7个拉链的jar并拖放新课程以复制旧课程

答案 7 :(得分:0)

编辑jar中的properties / my_app.properties文件:

"zip -u /var/opt/my-jar-with-dependencies.jar properties/my_app.properties"。基本上"zip -u <source> <dest>",其中dest相对于jar提取文件夹。

答案 8 :(得分:0)

您可以在线查找任何.jar文件的源代码,使用基本设置在IDE中导入相同的项目。在.java文件中进行必要的更改并将其编译为.class文件。

编译完成后你需要提取jar文件,用新文件替换旧的.class文件。

并使用以下命令重建.jar文件

Jar cf test.jar *

注意:我已经在我们的项目中做了这么多次更改,希望你会发现它很有用。

答案 9 :(得分:0)

高级步骤:

Setup the environment
Use JD-GUI to peek into the JAR file
Unpack the JAR file
Modify the .class file with a Java Bytecode Editor
Update the modified classes into existing JAR file
Verify it with JD-GUI

请参阅下面的链接以获取详细的步骤和方法,

https://www.talksinfo.com/how-to-edit-class-file-from-a-jar/

答案 10 :(得分:-1)

另一种方法是不替换jar文件中的.class文件。而是将其放入一个新的jar文件中,并确保它在类路径中比原始jar文件更早出现。

我不确定是否会将此推荐用于生产软件,但对于开发而言,它既快速又简单。