修改jar包中.classwen文件

1. 另存为.java文件

下载安装JD-GUI,打开需要修改的jar包,找到想要修改的class文件,ctrl+s保存为.java文件。

实例中将jar包和要修改的java文件放在同一目录。

在这里插入图片描述

2. 修改.java文件内容,并生成.class文件

修改.java文件内容并保存

在这里插入图片描述

 在当前文件夹的cmd中执行以下命令生成.class文件,window系统中确实为分号。

​javac -cp FFmpeg-1.0.jar;  *.java
将修改后的java文件编译生成class文件

3. 覆盖原.class文件,并生成新的jar包

解压jar包,然后进入解压jar包后生成的同名目录下,将步骤2中新生成的.class覆盖解压后的原文件,在此cmd中执行以下命令生成新的jar包。(本案例中,步骤2和3执行cmd命令的路径不一样

jar cvf FFmpeg-1.0.jar *

方法一

!!!除了以上的方式,其实也可以通过 vim 命令直接修改 jar 包配置文件的内容,然后直接保存即可,不过这种方法必须保证服务器上已经安装了 zip 和 unzip 命令,并且jar包没有用二进制字节码表示。

方法二

首先需要找出你的配置文件在 jar 包中的路径,可以使用下面的命令获取配置文件的路径是什么

# 找出配置文件在 jar 包中的路径
jar -tf <jar包路径> | <grep 配置文件名称>

解压配置文件出来,执行完下面的命令之后则可以将配置文件解压到当前执行命令的目录下

jar -xvf <jar包路径> <配置文件路径>

修改配置文件内容,然后再将修改后的配置文件重新压缩到 jar 包之后

jar -uvf <jar包路径> <解压后的配置文件的路径>

执行完上述命令之后即可将修改后的配置文件添加到 jar 包之中,使用 vim 命令可以直接打开 jar 包,查看其中的配置文件是否已经修改完成

方法三

使用jarjar.jar包,批量修改jar的包路径,连同文件的引用路径一起改掉

方法四

使用maven-shade-plugin插件,同事可以解决多版本jar包冲突问题

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.2.4</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <createDependencyReducedPom>true</createDependencyReducedPom>
              <relocations>
                <relocation>
                  <!-- 改名前 -->
                  <pattern>org.apache.poi</pattern>
                  <!-- 改名后 -->
                  <shadedPattern>shaded.org.apache.poi</shadedPattern>
                </relocation>

                可以配置多个
                <relocation>
                  <!-- 改名前 -->
                  <pattern>com.deepoove.poi</pattern>
                  <!-- 改名后 -->
                  <shadedPattern>shaded.com.deepoove.poi</shadedPattern>
                </relocation>
              </relocations>
            </configuration>
          </execution>
        </executions>
      </plugin>

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐