【发布时间】:2010-12-12 15:14:48
【问题描述】:
我想用一个新的更新 jar 中的 .class 文件。最简单的方法是什么,尤其是在 Eclipse IDE 中?
【问题讨论】:
我想用一个新的更新 jar 中的 .class 文件。最简单的方法是什么,尤其是在 Eclipse IDE 中?
【问题讨论】:
【讨论】:
source和destination。对我来说input-file(s),但source 在哪里?
只需使用7-Zip 或 Winzip 将新类文件拖放到 JAR 中。您甚至可以使用父文件夹图标修改包含在 WAR 文件中的 JAR 文件,并在 7zip 检测到内部文件已被修改时单击确定
【讨论】:
jar -xvf 将文件解压到一个目录中。jar -cvf 创建一个新的jar 文件。【讨论】:
Jar 是一个存档,您可以在自己喜欢的文件管理器(例如 Total Commander)中自己替换其中的文件。
【讨论】:
JAR 文件只是变相的 .zip。压缩文件夹包含.class 文件。
如果您使用的是 macOS:
.class 文件并将其替换为新的 .class 文件。其他 - 在 macOS 上参考原始 jar 编译单个 .class 文件
javac -classpath originalJar.jar myClass.java 这将创建名为 myClass.class 的编译类。从这里开始,按照上述步骤操作。您也可以使用 Eclipse 来编译它,只需通过右键单击项目“构建路径”->“添加外部档案”来引用原始 jar。从这里您应该能够将其编译为 jar,并使用上面的 zip 技术从 jar 中检索类。
【讨论】:
在 jar 中编辑 properties/my_app.properties 文件:
"zip -u /var/opt/my-jar-with-dependencies.jar properties/my_app.properties"。基本上是"zip -u <source> <dest>",其中 dest 是相对于 jar 提取文件夹。
【讨论】:
1) 您可以将文件解压缩到一个名为
的文件夹中jarname.jar
然后替换文件夹中的文件,如果您在调试时经常更新类,会很方便
2)你可以提取jar替换文件然后再将jar重新启动
3) 打开带有 7 zip 的 jar 并将您的新类拖放到其中以复制旧类
【讨论】:
您可以在线找到任何 .jar 文件的源代码,在您的 IDE 中导入相同的项目并进行基本设置。在 .java 文件中进行必要的更改并为 .class 文件编译它。
编译完成后,需要解压jar文件,将旧的.class文件替换为新的。
并使用以下命令重建 .jar 文件
jar cf test.jar *
注意:我已经在我们的项目中做了很多次这个更改,希望你会发现它有用。
【讨论】:
高级步骤:
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/
【讨论】:
另一种方法是不替换 jar 文件中的 .class 文件。而是将其放入一个新的 jar 文件中,并确保它出现在您的类路径中比原始 jar 文件更早。
我不确定我是否会推荐这个用于生产软件,但对于开发来说它既快速又简单。
【讨论】: