案例:本文主要描述linux系統執行jar包讀取jar包同級目錄的外部配置檔案
方法一:相對路徑設定配置檔案
(1)在jar包同級目錄建立配置檔案conf.properties並寫入配置資料:
confData=data
1
(2)開始寫入自動化測試程式碼
//from fhadmin.cn
public class Test{
public String getData() throws IOException {
//讀取配置檔案
Properties properties = new Properties();
File file = new File("conf.properties");
FileInputStream fis = new FileInputStream(file);
properties.load(fis);
fis.close();
//獲取配置檔案資料
String confData = properties.getProperty("confData");
System.out.println(confData);
}
}
(3)執行jar包
java -jar jarNanexxx
方法二:絕對路徑設定配置檔案
解決問題:使用相對路徑的方法在jar包同級目錄手動執行jar包時沒有問題,但使用linux系統的crontab檔案定時排程時報錯,原因:因為我們手動執行某個指令碼時,是在當前shell環境下進行的,程式能找到環境變數;而系統自動執行任務排程時,除了預設的環境,是不會載入任何其他環境變數的。因此就需要在crontab檔案中指定任務執行所需的所有環境變數,或者在程式中使用絕對路徑。
(1)在jar包同級目錄建立配置檔案conf.properties並寫入配置資料:
confData=data
(2)開始寫入自動化測試程式碼
//from fhadmin.cn
public class Test{
public String getData() throws IOException {
//獲取jar包同級目錄
String path = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
String[] pathSplit = path.split("/");
String jarName = pathSplit[pathSplit.length - 1];
String jarPath = path.replace(jarName, "");
String pathName=jarPath+"minhang.properties";
System.out.println("配置檔案路徑:"+jarPath);
//讀取配置檔案
Properties properties = new Properties();
File file = new File(pathName);
FileInputStream fis = new FileInputStream(file);
properties.load(fis);
fis.close();
//獲取配置檔案資料
String confData = properties.getProperty("confData");
System.out.println(confData);
}
}
(3)執行jar包
java -jar jarNanexxx
本作品採用《CC 協議》,轉載必須註明作者和本文連結