❶ java 程序打包為jar發布後,讀取配置文件路徑出錯 ,怎樣獲取配置文件路徑
給你個例子,讀取config.properties文件。
文件內容(值自己加)如下:
TestHosts =
FormalHosts =
TestConfig =
FormalConfig =
HostsPath =
ConfigPath =
讀取文件的類如下:
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.*;
public class EvnConfig{
public static Properties PROPERTIES = new Properties();
static{
String proFilePath = System.getProperty("user.dir")+"/config.properties";
//System.out.println(proFilePath);
//InputStream propertiesStream = EvnConfig.class.getClassLoader().getResourceAsStream(proFilePath);
InputStream in = null;
try {
in = new BufferedInputStream(new FileInputStream(proFilePath));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try{
PROPERTIES.load(in);
}catch(IOException e){
System.out.println("properties創建失敗!");
e.printStackTrace();
}
//System.out.println("EvnConfig.testHosts:"+PROPERTIES.getProperty("TestHosts"));
}
public static final String testHosts = changeCode(PROPERTIES.getProperty("TestHosts"));
public static final String formalHosts = changeCode(PROPERTIES.getProperty("FormalHosts"));
public static final String testConfig = changeCode(PROPERTIES.getProperty("TestConfig"));
public static final String formalConfig = changeCode(PROPERTIES.getProperty("FormalConfig"));
public static final String hostsPath = changeCode(PROPERTIES.getProperty("HostsPath"));
public static final String configPath = changeCode(PROPERTIES.getProperty("ConfigPath"));
public static String changeCode(String str){
String toStr = "";
try {
//System.out.println(str + "轉換...");
toStr = new String(str.getBytes("ISO-8859-1"),"GB2312");
//System.out.println(str + "轉換成功!");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
System.out.println(str + "轉換失敗!");
e.printStackTrace();
}
return toStr;
}
}
❷ 關於java讀取jar包內log4j配置文件
一、Thread.currentThread().getContextClassLoader().getResource("resources/log4j.xml").getPath();
二、java.net.URLimUrl=getClass().getResource("resources/log4j.xml");
三、java.net.URLimUrl=getClass().getResource("/resources/log4j.xml");
四、//包名開始
Strings_xmlpath="ldg/resource/resources/log4j.xml";
InputStreamin=ClassLoader.getSystemResourceAsStream(s_xmlpath);
❸ 修改jar包中的配置文件
原文地址: 修改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 在標准輸出中生成詳細輸出