当前位置: 代码网 > it编程>编程语言>Java > 如何替换springboot打好jar包中的class文件

如何替换springboot打好jar包中的class文件

2025年12月30日 Java 我要评论
替换springboot打好jar包中的class文件<plugin> <groupid>org.springframework.boot</groupid>

替换springboot打好jar包中的class文件

<plugin>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-maven-plugin</artifactid>
</plugin>

springbot项目中 通常使用上述方法打成jar包后,直接通过java -jar来运行。

这种方式打成jar包的结构如下:

其中manifest.mf内容如下:

manifest-version: 1.0
spring-boot-classpath-index: boot-inf/classpath.idx
implementation-title: grpc_server
implementation-version: 1.0-snapshot
spring-boot-layers-index: boot-inf/layers.idx
start-class: cn.edu.nuc.app
spring-boot-classes: boot-inf/classes/
spring-boot-lib: boot-inf/lib/
build-jdk-spec: 1.8
spring-boot-version: 2.7.9
created-by: maven jar plugin 3.2.2
main-class: org.springframework.boot.loader.jarlauncher

有的时候我们想临时替换一个class文件做测试,该如何做呢?

1、解压-替换-重新打包

1.备份原jar:
cp app.jar app.jar.bak

2.解压jar:
mkdir temp
cd temp
jar xf ../app.jar

3.替换:
cp /path/to/new/myclass.class boot-inf/classes/com/example/demo/

4.重新打包:
jar cf ../app-fixed.jar *
注意:这种方式打好的包无法直接执行。因为spring boot的可执行jar有特殊的启动器和结构,不能直接用普通的jar cf命令打包,否则启动器会失效。推荐用spring boot提供的spring-boot-maven-plugin或spring-boot-gradle-plugin重新打包,或者用zip命令重新打包后再用spring-boot-loader启动。


5.使用spring-boot-loader启动:
java -cp app-fixed.jar org.springframework.boot.loader.jarlauncher

2、使用jar命令直接替换class

jar uf app.jar boot-inf/classes/com/example/demo/myclass.class

前提是你已经准备好新的myclass.class文件,且路径和jar内路径一致。

注意:

  • 该方法不会破坏spring boot启动器结构,推荐使用。
  • 需要保证class文件路径正确。

3、使用zip命令替换

jar包本质是zip包,也可以用zip命令替换:

zip -u app.jar boot-inf/classes/com/example/demo/myclass.class

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com