Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更新jar中的.class文件_Java_Eclipse_Jar - Fatal编程技术网

Java 更新jar中的.class文件

Java 更新jar中的.class文件,java,eclipse,jar,Java,Eclipse,Jar,我想用一个新文件更新jar中的.class文件。最简单的方法是什么,尤其是在EclipseIDE中?您想自动还是手动完成?如果手动操作,JAR文件实际上只是一个ZIP文件,因此您应该能够使用任何ZIP读取器打开它。(您可能需要先更改扩展名。)如果您想通过Eclipse自动更新JAR文件,您可能需要查看Eclipse中的支持并查看。JAR是一个归档文件,您可以在您喜欢的文件管理器(例如Total Commander)中自己替换其中的文件。详细介绍如何更新JAR文件 jar -uf jar-file

我想用一个新文件更新jar中的.class文件。最简单的方法是什么,尤其是在EclipseIDE中?

您想自动还是手动完成?如果手动操作,JAR文件实际上只是一个ZIP文件,因此您应该能够使用任何ZIP读取器打开它。(您可能需要先更改扩展名。)如果您想通过Eclipse自动更新JAR文件,您可能需要查看Eclipse中的支持并查看。JAR是一个归档文件,您可以在您喜欢的文件管理器(例如Total Commander)中自己替换其中的文件。

详细介绍如何更新JAR文件

jar -uf jar-file <optional_folder_structure>/input-file(s)     
jar-uf jar文件/输入文件
其中“u”表示更新。

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

jarname.jar

然后替换文件夹中的文件,如果您在调试过程中大量更新该类,这将非常方便

2) 您可以提取jar并替换该文件,然后jar将其重新安装


3) 使用7 zip打开jar,拖放新类以复制旧类

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

另一种选择是不替换JAR文件中的.class文件。而是将其放入一个新的jar文件中,并确保它出现在类路径上的时间早于原始jar文件

我不确定我会推荐这个用于生产软件,但对于开发来说,它又快又容易

  • 使用
    jar-xvf
    将文件解压缩到目录中
  • 进行更改并替换类
  • 使用
    jar-cvf
    创建一个新的jar文件

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

    如果您在macOS上:

  • 重命名该文件以拥有“.zip”扩展名。e、 g.myJar.jar->myJar.zip
  • 解压缩“.zip”(双击它)。将出现一个名为“myJar”的新文件夹
  • 查找
    .class
    文件并将其替换为新的.class文件
  • 选择文件夹“myJar”的所有内容,然后选择“压缩x项”不要压缩文件夹本身,只压缩其内容
  • Miscellaneous-在macOS上编译单个.class文件,并参考原始jar

  • 创建一个包含代码的文件myClass.java
  • 从聚光灯打开终端
  • javac-classpath originalJar.jar myClass.java
    这将创建名为myClass.class的编译类

  • 从这里开始,按照上面的步骤操作。您也可以使用Eclipse来编译它,只需右键单击项目“BuildPath”->“AddExternalArchives”,引用原始jar即可。从这里,您应该能够将其编译为jar,并使用上面的zip技术从jar中检索类。

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


    “zip-u/var/opt/my-jar-with-dependencies.jar properties/my_app.properties”
    。基本上是
    “zip-u”
    ,其中dest与jar extract文件夹相对。

    您可以在线找到任何.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
    
    请参阅下面的链接,了解执行此操作的详细步骤和方法


    使用WinZip,您必须首先启动WinZip打开它,然后将jar文件拖到WinZip窗口中。Windows上的7z不支持大写/小写,即它将同时替换CA.class和CA.classIn此命令中:u选项表示您要更新现有的jar文件。f选项表示要更新的JAR文件是在命令行上指定的。jar文件是要更新的现有jar文件。输入文件是要添加到Jar文件的一个或多个文件的空格分隔列表。我想将属性文件更新到特定位置,理想情况下应该有两个参数
    source
    destination
    。对于我来说,
    输入文件
    ,但是
    源代码在哪里?@ShashiRanjan您找到解决方案了吗???@Dinesh我使用了“zip-u/var/opt/my-jar-with-dependencies.jar properties/my_app.properties”。基本上是“zip-u”,其中dest是相对于jar extract文件夹的。非常感谢@ShashiRanjan