1. 以现有项目jar:xxx.jar为例
如根据不同数据库需要更换使用不同的jdbc驱动jar的场景: 把外部驱动jar放到lib-dir1,lib-dir2等目录。
2. 再确定项目jar的类型
- 查看jar的META-INF/MANIFEST.MF文件中的Main-Class(也可以windows下用解压缩工具查看)
css
unzip -p xxxx.jar META-INF/MANIFEST.MF | grep Main-
- Main-Class类型主要有以下3类
makefile
Main-Class: org.springframework.boot.loader.JarLauncher
或者
Main-Class: org.springframework.boot.loader.PropertiesLauncher
或者
Main-Class: x.y.z (x.y.z是示例,以实际为准,只要不是前两个)
3. 修改jar启动方式
若原启动命令为([....]为其他参数部分)
bash
[....] java [....] -jar xxx.jar [....]
修改启动方式为:
- Main-Class: org.springframework.boot.loader.JarLauncher
bash
[....] java [....] -Dloader.path="lib-dir1,lib-dir2" -cp "xxx.jar" org.springframework.boot.loader.PropertiesLauncher [....]
- Main-Class: org.springframework.boot.loader.PropertiesLauncher
bash
[....] java [....] -Dloader.path="lib-dir1,dir2" -jar xxx.jar [....]
或者
[....] java [....] -Dloader.path="lib-dir1,dir2" -cp "xxx.jar" org.springframework.boot.loader.PropertiesLauncher [....]
- Main-Class: x.y.z (x.y.z是示例,以实际为准,只要不是前两个)
bash
多个外置目录用":"(英文冒号)
[....] java [....] -cp "xxx.jar:lib-dir1/*:lib-dir2/*" x.y.z [....]
知识点
- java 参数
bash
java -cp "xxx.jar:lib1/*:lib2/*" x.y.z
-cp: 指定java运行加载的类路径,linux下英文冒号分割(windows下英文分号分隔)
x.y.z 为启动类
- springboot 默认打包后的启动类 参见:官网
