windows下运行springboot的jar包,修改替换class文件,修改配置文件application,打包

在windows下跑springboot的jar包,经常会用到一些命令行和操作。

1、修改配置文件(以application.yml为例)

#提取文件
jar xvf mqtt-10.1.0.jar BOOT-INF/classes/application.yml

#将文件装回jar包
jar uvf mqtt-10.1.0.jar BOOT-INF/classes/application.yml

执行了提取文件命令,不光会把文件提取,文件夹也会提取出来。

修改完以后,再把该文件装回去。

2、修改class文件

这个比较麻烦。通常场景都是远程登录堡垒机,通过堡垒机登录这些windows服务器。这时候,你发现jar包的某个文件的某行代码有bug,需要修改。

2.1 简单的情况:

有idea,有jar包的源码文件。

如果在服务器上有idea那就好办了,或者在其中一台服务器上有idea。步骤如下:

1) 在源码文件上修改

2) 使用idea的maven打包(lifecycle下install)

3) 将打包好的jar包复制到有bug的那个jar包目录下(打包好的jar包的位置在idea控制台的maven日志有显示)

4) 是用上面的命令提取class文件,替换class文件

例如:有bug的jar包名为mqtt-10.1.0.jar,刚打包好的jar包名为mqtt-0.0.1-SNAPSHOT.jar,提取mqtt-0.0.1-SNAPSHOT.jar的class文件,装进mqtt-10.1.0.jar里。命令如下:

例如有bug的文件是 com.ali.service.iml.xxxServiceImpl.class

#提取文件
jar xvf mqtt-0.0.1-SNAPSHOT.jar BOOT-INF/classes/com/ali/service/iml/xxxServiceImpl.class

#将文件装回jar包
jar uvf mqtt-10.1.0.jar BOOT-INF/classes/com/ali/service/iml/xxxServiceImpl.class

2.2 复杂情况

没有idea,没有jar包的源码文件。

需要先下载个jd-gui,看看class文件在这个jar包的哪个目录下。

在自己电脑上用idea创建个springboot项目,创建该文件所在目录的相同名字的目录。在jd-gui里将这个class文件的代码复制出来。(但要注意,匿名内部类jd-gui无法解析。若有匿名内部类,可以直接将这个class文件使用idea解析)。这时候这个文件还是报错状态,因为很多引用的类还没有。

将有bug的jar包作为lib包引入。这时候就不会报错了。

这就是创建同样名字的目录和文件的目的:目录一样,引用的类就能保持同样的包名。这也是为了打包出来的class文件里package名字一样。

打包完以后,新旧jar包放在同一个目录下,就可以使用上面的命令,替换class文件了。

之所以这样做,因为没法对单独的文件使用javac,因为这个文件引用了很多其他类。

参考:

修改jar包中class文件_修改jar中的class文件_七朵儿花儿的博客-CSDN博客

windows自启动

1. 启动文件夹(Startup Folder): - 按下Win + R键打开“运行”对话框。 - 输入 shell:startup 并点击“确定”按钮,这将打开Windows的启动文件夹。 - 将要自动启动的程序的快捷方式或可执行文件复制到启动文件夹中。

2. 任务计划程序(Task Scheduler): - 打开“任务计划程序”(可以在开始菜单中搜索)。 - 在左侧导航窗格中,选择“创建基本任务”或“创建任务”选项。 - 按照向导的指示设置任务的名称、触发器(选择“启动时”或“登录时”)和操作(指定要运行的程序或脚本)。 - 完成设置后,任务将在系统启动时自动运行。

3. 注册表编辑器(Registry Editor): - 按下Win + R键打开“运行”对话框。 - 输入 regedit 并点击“确定”按钮,这将打开注册表编辑器。 - 导航到以下注册表路径: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run (仅对当前用户)或 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run (对所有用户)。 - 在右侧窗格中,右键单击空白处,选择“新建” > “字符串值”。 - 设置新字符串值的名称,例如“MyProgram”。 - 双击新字符串值,将其值设置为要自动启动的程序的路径。

 

你可能感兴趣的:(java,windows,windows,jar,class,application,springboot)