jar方式运行项目-读取jar包中的文件

jar方式运行项目-读取jar包中的文件,第1张

在目前的微服务和容器部署的SpringBoot坏境下,我们一般将项目直接打成 jar包的方式运行(java -jar *),我们可能需要读取resources目录下的自定义文件,想在程序运行时找到该目录,并读取需要的文件。

当时我使用 System.getProperty("user.dir") 获取工作目录的坑,本地idea工具运行没问题,但是一但打成jar包,路径会变成jar包所在的目录,无法读取jar内部的文件, 不建议用这种方式

由于jar中的文件都属于资源的一种,所以获取需从类加载器进行获取。正确的姿势是采用 this.getClass().getClassLoader().getResourceAsStream() 的方式。

读取自定义文件时,由于getResourceAsStream方法返回的是一个InputStream流,采用InputStreamReader这种方式 最好指定一种编码方式 ,不然可能 中文乱码 !(我在解析xml时中文乱码)

原文地址: 修改jar包中的配置文件

现有jar包 base-web.jar

查找jar包里面的文件:

jar ftv ks-web-1.0.3.jar | grep pom.xml

要修改jar包中配置文件可以用下面三种方式:

方式一 通过vim命令直接修改保存jar。超方便。

通过vim命令直接编辑jar

vim xxx.jar 该命令首先会列出全部文件,可以通过输入/abc来搜索,定位到对应的abc文件后回车进入配置文件内进行编辑,:wq保存。

方式二 通过jar命令替换jar包中的文件(也可新增)

1.列出jar包中的文件清单

jar  tf  base-web.jar

2.提取出内部jar包的指定文件

jar  xf  base-web.jar  `jar  ft  base-web.jar | grep  t_ivr_data_bj.json`

3.然后可以修改文件

vim BOOT-INF/classes/realtime/t_ivr_data_bj.json

4.更新配置文件到内部jar包.(存在覆盖,不存在就新增)

jar uf  base-web.jar  BOOT-INF/classes/realtime/t_ivr_data_bj.json      

4.1更新内部jar包到jar文件

jar  uf  base-web.jar  内部jar包.jar     

5.可以查看验证是否已经更改

vim base-web.jar

方式三 解压jar包,修改后重新打包jar

1.解压

unzip base-web.jar

2.移除jar包,最好备份

rm base-web.jar

3.重新打包

jar -cfM0 base-web.jar *

或者

jar -cvfm0 base-web.jar ./META-INF/MANIFEST.MF ./

4.运行

java -jar base-web.jar

jar命令参数:

-c 创建新的存档

-f 指定存档文件名

-M 不配置配置清单,这样还可以使用maven生成的配置清单也就是MANIFEST.MF

-0 不进行压缩,如果压缩会有问题

-m 指定清单文件

-t 列出归档目录

-x 从档案中提取指定的 (或所有) 文件 

-u 更新现有的归档文件 

-v 在标准输出中生成详细输出 

java 中 jar包的修改文件,一般分两种:

第一种  修改jar包中的文件,用压缩工具打开,直接进行修改或替换就可以了。

第二种 修改或替换 jar包的jar包文件  ,具体步骤如下:

解压第一层目录  

把对应的jar包解压出来后

打开需要修改的jar包中的文件,修改文件,此时要选择解压工具的文件项,把要添加的文件该成 不直接压缩直接存储文件。

接着把改好的文件放到第一个jar包即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11415734.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存