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

 更新时间:2025年12月30日 14:23:07   作者:赶路人儿  
本文介绍了在Spring Boot项目中打包成jar包后,临时替换class文件的三种方法:解压-替换-重新打包、使用jar命令直接替换class、使用zip命令替换jar包

替换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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java 简化正则表达式的使用

    Java 简化正则表达式的使用

    本篇文章主要介绍了Java 简化正则表达式使用的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-04-04
  • springboot yml配置文件使用@project.xxxx@启动报错Do not use @ for indentation问题

    springboot yml配置文件使用@project.xxxx@启动报错Do not 

    这篇文章主要介绍了springboot yml配置文件使用@project.xxxx@启动报错Do not use @ for indentation问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • java读取xml配置参数代码实例

    java读取xml配置参数代码实例

    这篇文章主要介绍了java读取xml配置参数代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Spring Security认证提供程序示例详解

    Spring Security认证提供程序示例详解

    这篇文章主要给大家介绍了关于Spring Security认证提供程序的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Security具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • Java神操作:图片快速转换PDF秘籍

    Java神操作:图片快速转换PDF秘籍

    想掌握Java神操作,将图片快速转换成PDF吗?这份秘籍将一步步引导你,轻松实现这一目标,别等了,跟着我们一起,解锁这项超实用技能吧!
    2024-02-02
  • JPA如何使用nativequery多表关联查询返回自定义实体类

    JPA如何使用nativequery多表关联查询返回自定义实体类

    这篇文章主要介绍了JPA如何使用nativequery多表关联查询返回自定义实体类,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • SpringBoot使用自动配置xxxAutoConfiguration

    SpringBoot使用自动配置xxxAutoConfiguration

    这篇文章介绍了SpringBoot自动配置xxxAutoConfiguration的使用方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • Java实现桌面日历

    Java实现桌面日历

    这篇文章主要为大家详细介绍了Java实现桌面日历,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • java排查死锁示例

    java排查死锁示例

    这篇文章主要介绍了java排查死锁示例,通过java中简单的死锁示例引出四种排查死锁的工具,详细讲解请看全文,希望对大家有所帮助
    2021-08-08
  • Java编程实现轨迹压缩之Douglas-Peucker算法详细代码

    Java编程实现轨迹压缩之Douglas-Peucker算法详细代码

    这篇文章主要介绍了Java编程实现轨迹压缩之Douglas-Peucker算法详细代码,具有一定借鉴价值,需要的朋友可以参考。
    2017-11-11

最新评论