现有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 在标准输出中生成详细输出
先看代码目录结构:\x0d\x0asrc/weather/\x0d\x0aQueryWeather.java\x0d\x0aweather.xml\x0d\x0a程序里面可以直接读取到weather.xml文件,代码如下:\x0d\x0aprivate static String getXmlContent()throws IOException {\x0d\x0aFileReader f = new FileReader("src/weather/weather.xml")\x0d\x0aBufferedReader fb = new BufferedReader(f)\x0d\x0aStringBuffer sb = new StringBuffer("")\x0d\x0aString s = ""\x0d\x0awhile((s = fb.readLine()) != null) {\x0d\x0asb = sb.append(s)}return sb.toString()}但是一旦把这个class文件和xml文件打成jar包再运行,对不起,报错,QueryWeather.class字节码根本找不到weather.xml\x0d\x0a在看打成jar包的结构:META-INFMANIFEST.MFweatherQueryWeather.class\x0d\x0aweather.xml\x0d\x0a用下面的方法就可以找到weather.xml\x0d\x0aprivate static String getXmlContent()throws IOException {\x0d\x0aReader f = new InputStreamReader(QueryWeather.class.getClass().getResourceAsStream("/weather/weather.xml"))\x0d\x0aBufferedReader fb = new BufferedReader(f)\x0d\x0aStringBuffer sb = new StringBuffer("")\x0d\x0aString s = ""欢迎分享,转载请注明来源:内存溢出
评论列表(0条)