当前位置: 首页 > news >正文

替换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.bak2.解压jar:
mkdir temp
cd temp
jar xf ../app.jar3.替换:
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

 

http://www.dtcms.com/a/265542.html

相关文章:

  • Python 异步爬虫(aiohttp)高效抓取新闻数据
  • 前端开发中的 Base64 图片革命:从链接到嵌入的性能优化
  • Go爬虫实时性能监控方案
  • 利用人名语言分类案例演示RNN、LSTM和GRU的区别(基于PyTorch)
  • 【学习线路】机器学习线路概述与内容关键点说明
  • git 中删除提交历史
  • 闲庭信步使用SV搭建图像测试平台:第二十七课——图像的腐蚀
  • Windows DOS CMD 100
  • PostgreSQL-XL之 序列(Sequence)
  • 深度学习2(逻辑回归+损失函数+梯度下降)
  • 基于Spring Boot + MyBatis-Plus + Thymeleaf的评论管理系统深度解析
  • Spring Boot + Screw 一键生成数据库设计文档
  • GitHub 解码指南:用 AI 赋能,五步快速掌握任意开源项目
  • WordPress 站点漏洞利用:数据库恶意注入与多重感染的案例分析
  • 大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务
  • 如何在Jupyter notebook中删除内核以及添加内核
  • 大数据救公益:数字时代下的社会力量如何玩转“数据+善意”
  • CSS之基础语法一文全解析
  • 大语言模型(LLM)按架构分类
  • 小黑黑日常积累大模型prompt句式2:【以段落的形式输出,不分点列举】【如果没有相关内容则不输出】【可读性强】【输出格式规范】
  • 音视频会议服务搭建(设计方案-Go服务端API业务逻辑流程图)-04
  • js随机生成一个颜色
  • Python 机器学习核心入门与实战进阶 Day 1 - 分类 vs 回归
  • 【Linux】Rocky Linux 安装 Jenkins
  • Jenkins 构建过程常见错误
  • serviceWorker缓存资源
  • 项目——视频共享系统测试
  • 多线程(进阶)
  • PTA N个数求和
  • 基于Hadoop的京东厨具商品数据分析及商品价格预测系统的设计与实现