精华内容
下载资源
问答
  • 修改 jar 包中 class 文件
    2021-03-09 09:23:57

    做 Java 练习时,引用的第三方的 jar 包,其中有些方法冗余,在 IDEA 智能提示时总是排在第一个提示,影响开发效率,因此想修改 jar 包中 class 的方法。由于使用的是 macOS 系统,看了很多教程基本上是基于 Windows 的,不大适用,故整理下解决方法,方便遇到此问题的同学能顺利解决。

    现在假设我有一个第三方 jar 包 net.jar ,我要修改里面的 Print.class 类,具体操作步骤如下:

    反编译 jar 包

    使用 JD-GUI 这个工具就能解决,下载安装完打开软件将你的 jar 包拖进去,将你要修改的 class 保存成 .java 文件即可。这一步我们得到了 Print.java 文件。(当然,你也可以通过其它工具来反编译,网上说通过 vim 直接修改 class 文件的,我这边打开会乱码,故反编译后保存成 .java 文件再修改。)

    生成 class

    得到了修改完的 .java 文件后,我们需要将它编译成 class 文件才能替换掉 jar 包里的 class ,直接改后缀名是无效的哦。现在假设 jar 包和 反编译后的 .java 文件在同一目录,执行以下命令即可生成可用的 class。

    javac -cp net.jar Print.java

    替换 class

    1、以防万一,先拷贝 jar 包为 .zip 文件再进行操作

    cp net.jar net.zip

    2、解压 net.zip 到 net-unzip 文件夹

    unzip net.zip -d net-unzip/

    进入解压后的文件夹,找到你要替换的类,并用之前生成的 Print.class 替换掉。

    3、重新打包

    在 net-unzip 目录里执行以下命令,其中 META-INF 和 net 均为解压后就存在的目录

    jar -cvfM0 net.jar META-INF net

    重新打包完,此时当前目录应该多了个 net.jar 文件,至此整个修改 jar 包操作结束。

    参考

    更多相关内容
  • 修改jar包中的class文件文中用到的源码
  • 第一步:查询出目标文件jar包中的目录 jar tvf userService-0.0.1-SNAPSHOT.jar |grep bootstrap.yml ; 第二步:目标文件名(copy上面查出的全路径) 将目标文件及所在jar包中的目录解压到当前路径 jar xvf ...

    第一步:查询出目标文件在jar包中的目录
    jar tvf userService-0.0.1-SNAPSHOT.jar |grep bootstrap.yml ;
    第二步:目标文件名(copy上面查出的全路径) 将目标文件及所在jar包中的目录解压到当前路径
    jar xvf userService-0.0.1-SNAPSHOT.jar BOOT-INF/classes/bootstrap.yml ;
    第三步:修改配置文件的信息
    vim BOOT-INF/classes/bootstrap.yml;
    wq 保存退出;
    第四步:替换修改后的文件使配置文件生效
    jar uf userService-0.0.1-SNAPSHOT.jar BOOT-INF/classes/bootstrap.yml ;
    第五步:运行jar包
    nohup java -jar /file/ABC.jar >> /file/ABC.log 2>&1 &

    在这里插入图片描述
    linux测试接口
    curl -X POST -H “Content-Type: text/plain” --data “{“id”:“000123”}” http:/ip:port/ABCservice/person/getDetail

    展开全文
  • 打包以及修改jar包cd genesys_data_etlmvn clean package -Poffline -Dmaven.test.skip=true日志如下:[INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ genesys_data_etl ---[INFO] Building jar: /Users/xx/...

    打包以及修改jar包

    cd genesys_data_etl

    mvn clean package -Poffline -Dmaven.test.skip=true

    日志如下:

    [INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ genesys_data_etl ---

    [INFO] Building jar: /Users/xx/IdeaProjects/genesys_data_etl/target/genesys_data_etl-0.0.1-SNAPSHOT.jar

    生成jar包

    此时可以通过命令

    java -jar genesys_data_etl-0.0.1-SNAPSHOT.jar

    运行jar包。

    但是要修改jar包中的配置文件怎么办呢?

    方式一通过vim命令直接修改保存jar。超方便。

    1.通过vim命令直接编辑jar

    vim xxx.jar 该命令首先会列出全部文件,可以通过输入/abc来搜索,定位到对应的abc文件后回车进入配置文件内进行编辑,:wq保存。

    方式二通过jar命令替换jar包中的文件(也可新增)

    1.列出jar包中的文件清单

    jar tf genesys_data_etl-0.0.1-SNAPSHOT.jar

    2.提取出内部jar包的指定文件

    jar xf genesys_data_etl-0.0.1-SNAPSHOT.jar BOOT-INF/classes/realtime/t_ivr_data_bj.json

    3.然后可以修改文件

    vim BOOT-INF/classes/realtime/t_ivr_data_bj.json

    4.更新配置文件到内部jar包.(存在覆盖,不存在就新增)

    jar uf genesys_data_etl-0.0.1-SNAPSHOT.jar BOOT-INF/classes/realtime/t_ivr_data_bj.json

    4.1更新内部jar包到jar文件

    jar uf genesys_data_etl-0.0.1-SNAPSHOT.jar 内部jar包.jar

    5.可以查看验证是否已经更改

    vim genesys_data_etl-0.0.1-SNAPSHOT.jar

    方式三解压jar包,修改后重新打包jar

    1.解压

    unzip genesys_data_etl-0.0.1-SNAPSHOT.jar

    2.移除jar包,最好备份

    rm genesys_data_etl-0.0.1-SNAPSHOT.jar

    3.重新打包

    jar -cfM0 new-genesys_data_etl-0.0.1-SNAPSHOT.jar *

    或者

    jar -cvfm0 genesys_data_etl-0.0.1-SNAPSHOT.jar ./META-INF/MANIFEST.MF ./

    4.运行

    java -jar new-genesys_data_etl-0.0.1-SNAPSHOT.jar

    jar命令参数:

    -c 创建新的存档

    -f 指定存档文件名

    -M 不配置配置清单,这样还可以使用maven生成的配置清单也就是MANIFEST.MF

    -0 不进行压缩,如果压缩会有问题

    -m 指定清单文件

    -t 列出归档目录

    -x 从档案中提取指定的 (或所有) 文件

    -u 更新现有的归档文件

    -v 在标准输出中生成详细输出

    展开全文
  • 使用unzip修改1、解包至当前目录tmp子目录下2、进入子目录3、修改配置文件4、内部jar文件逐个修改配置:流程相同(解包至tmp子目录、修改配置文件、打包、移除tmp子目录)5、打包至原jar文件6、返回上级目录,删除tmp...

    使用unzip修改

    1、解包至当前目录tmp子目录下

    2、进入子目录

    3、修改配置文件

    4、内部jar文件逐个修改配置:流程相同(解包至tmp子目录、修改配置文件、打包、移除tmp子目录)

    5、打包至原jar文件

    6、返回上级目录,删除tmp子目录

    jarfile="test.jar"

    unzip -x "$jarfile" -d "${jarfile}.tmp" # 解压至临时子目录

    cd "${jarfile}.tmp"

    # modify config

    zip -ru "../$jarfile" * # 在临时子目录中更新jar文件

    cd ../

    rm -rf "${jarfile}.tmp

    使用jar工具修改

    # 解出内部jar包

    jar tf 外部jar包文件.jar # 列出文件清单

    jar xf 外部jar包文件.jar 内部jar包.jar # 解出jar包中需修改的指定文件

    # 解出需修改文件

    jar tf 内部jar包.jar # 列内部jar包的文件清单

    jar xf 内部jar包.jar white_list.properties # 解出内部jar包的根路径的指定文件

    jar xf 内部jar包.jar conf/hbase.conf # 解出内部jar包子路径下的指定文件

    # 编辑配置文件

    vim white_list.properties # 编辑解出的配置文件

    vim conf/hbase.conf # 编辑解出的子路径下的文件

    # 更新配置文件到内部jar包

    jar uf 内部jar包.jar white_list.properties # 更新配置文件到内部jar包

    jar uf 内部jar包.jar conf/hbase.conf # 更新子路径下的配置文件到内部jar包

    # 更新内部jar包到外部jar包文件

    jar uf 外部jar包文件.jar 内部jar包.jar # 更新内部jar包到jar文件

    # 删除临时文件

    rm -f white_list.properties

    rm -rf conf/hbase.conf

    rm -f 内部jar包.jar

    ================================

    jar命令的用法:

    用法: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files …

    选项包括:

    -c 创建新的归档文件

    -t 列出归档目录

    -x 从档案中提取指定的 (或所有) 文件

    -u 更新现有的归档文件

    -v 在标准输出中生成详细输出

    -f 指定归档文件名

    -m 包含指定清单文件中的清单信息

    -e 为捆绑到可执行 jar 文件的独立应用程序指定应用程序入口点

    -0 仅存储; 不使用情况任何 ZIP 压缩

    -M 不创建条目的清单文件

    -i 为指定的 jar 文件生成索引信息

    -C 更改为指定的目录并包含其中的文件

    如果有任何目录文件, 则对其进行递归处理。

    清单文件名, 归档文件名和入口点名称的指定顺序

    与 ‘m’, ‘f’ 和 ‘e’ 标记的指定顺序相同。

    示例 1: 将两个类文件归档到一个名为 classes.jar 的归档文件中:

    jar cvf classes.jar Foo.class Bar.class

    示例 2: 使用现有的清单文件 ‘mymanifest’ 并将 foo/ 目录中的所有文件归档到 ‘classes.jar’ 中:

    jar cvfm classes.jar mymanifest -C foo/ .

    展开全文
  • 使用IDEA打开这个源码,修改源码之后,选择该文件,编译 在build文件夹找到新生成class文件 在原项目中,找到要替换的jar包 双击进入解压界面,但是不要解压出来 先删除原来的class文件,再把新...
  • 修改jar包中文件

    2020-11-12 14:00:32
    问题:修改JAR包中文件后,直接打包运行 步骤: 1、解压缩jar文件 jar -xf jar文件 2、修改解压后后的文件 3、重新打包 jar -cvfm0 包名.jar META-INF/MANIFEST.MF ./ 注意:解压后重新打包的时候需要...
  • 修改jar包中class文件的内容

    千次阅读 2020-08-06 17:19:43
    4、把新的class文件,替换jar包中的旧class文件,就可以了。 实际演示 例如:我想要修改mysql驱动包mysql-connector-java-6.0.6.jar中maxAllowPacket的默认值。 1、使用jad打开jar包,先找到class文件...
  • 如何修改jar包中的class文件

    千次阅读 2021-03-14 03:09:39
    有时候我们会面临着查看及修改jar包中.class文件的内容,如何操作请看下文:查看jar包的内容:这个可以使用jd-gui、luyten反编译得到源码xxx.java,方便看到整个jar包的结构。另外,使用jar命令可以将jar包解压出来...
  • 1.查看jar包的文件列表 jar tf xxx.jar 2.提取想要修改文件 jar xf xxx.jar BOOT-INF/classes/mappers/customize/ReceptionCustomizeMapper.xml 注意: BOOT-INF/classes/mappers/customize/...
  • 1、命令行中输入vim [jar包路径] 2、回车,打开jar包中文件目录,并定位到要修改文件位置 3、回车,打开文件内容进行修改 4、修改后,Ctrl+wq保存退出上步,再次Ctrl+q退出,完成修改
  • [root@HOLY home] jar -tvf team.jar | grep TempSvc.class # 7851 Sat May 30 16:28:40 CST 2020 BOOT-INF/classes/com/robot/TempSvc.class 2. 解压目标文件(包含目录层级)到当前目录中 ※路径必须一致
  • 修改jar包中class文件

    千次阅读 2020-04-02 00:29:22
    需求:银行跑批任务执行时要调用行方自己的短信平台给科技部人员发送短信,行方提供一个jar文件,通过shell脚本传参调用即可。...修改文件内容—>重新编译—>将原来jar包解压—>替换class文件—&g...
  • vim xx.jar 然后用上下键选中要修改文件,回车 修改 :wq :q
  • 找出修改后X.class文件,拷贝到解压后的jar包中 重新打jar包jar -cvf X.jar ./ 替换META-INF/MANIFEST.MF文件,到打包后的X.jar包中。用上一个命令打出的包,MANIFEST.MF文件中是没有入口类的信息的,需要更新...
  • 需要修改项目代码 修改内容不多 选择直接修改项目中class文件 解决方案: 1.直接拉取项目文件到本地 从服务端发送文件到客户端: sz filename 2.编译需要修改的java文件 编译java文件,输入命令为javac xxx.java ...
  • 一、查询需要替换的文件jar中的位置> jar tvf *****.jar | grep {fileName}执行结果:> jar tvf pkpassserver-0.0.1-SNAPSHOT.jar | grep cer.p12> 3289 Tue Nov 27 16:30:46 CST 2018 BOOT-INF/classes/...
  • IDEA对class文件进行修改
  • 如何修改/替换jar包中的class文件 1.准备好class文件以及对应的jar包 2.cmd打开窗口 3.执行以下命令(我的文件是放在桌面上的,找自己的文件位置,拖进去就行了) jar uvf C:\Users\Desktop\project.jar C:\Users\...
  • 1.先将要修改jar包备份 copy xxx.jar xxx.jar_bak 2.建立一个新的目录便于后面的打包 mkdir jar_tmp ...5.打包修改文件的所有文件与目录 jar -cfM0 xxx_new.jar * 注意:cfM0最后一个是零不是英文o. ...
  • 不想整个服务重新打jar包,这个时候就需要将jar包中的class文件替换成新的class文件。 具体操作如下: 1、将jar包拷贝出来一份,使用WinRaR压缩方式打开jar包,然后把新的class文件拖进去,拖进去后压缩方式选择存储...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,542
精华内容 25,416
关键字:

修改jar包中的文件时间