Jadi, Anda ingin memperlakukan .properties
file Anda pada folder yang sama dengan jar utama / runnable sebagai file daripada sebagai sumber daya dari jar utama / runnable. Dalam hal ini, solusi saya sendiri adalah sebagai berikut:
Hal pertama yang pertama: arsitektur file program Anda akan seperti ini (dengan asumsi program utama Anda adalah main.jar dan file properti utamanya adalah main.properties):
./ - the root of your program
|__ main.jar
|__ main.properties
Dengan arsitektur ini, Anda dapat memodifikasi properti apa pun di file properti utama menggunakan editor teks apa pun sebelum atau saat main.jar Anda berjalan (tergantung pada kondisi program saat ini) karena itu hanya file berbasis teks. Misalnya, file properti utama Anda mungkin berisi:
app.version=1.0.0.0
app.name=Hello
Jadi, ketika Anda menjalankan program utama dari folder root / base-nya, biasanya Anda akan menjalankannya seperti ini:
java -jar ./main.jar
atau, langsung:
java -jar main.jar
Di main.jar Anda, Anda perlu membuat beberapa metode utilitas untuk setiap properti yang ditemukan di file properti utama Anda; katakanlah app.version
properti akan memiliki getAppVersion()
metode sebagai berikut:
/**
* Gets the app.version property value from
* the ./main.properties file of the base folder
*
* @return app.version string
* @throws IOException
*/
import java.util.Properties;
public static String getAppVersion() throws IOException{
String versionString = null;
//to load application's properties, we use this class
Properties mainProperties = new Properties();
FileInputStream file;
//the base folder is ./, the root of the main.properties file
String path = "./main.properties";
//load the file handle for main.properties
file = new FileInputStream(path);
//load all the properties from this file
mainProperties.load(file);
//we have loaded the properties, so close the file handle
file.close();
//retrieve the property we are intrested, the app.version
versionString = mainProperties.getProperty("app.version");
return versionString;
}
Di bagian mana pun dari program utama yang membutuhkan app.version
nilai, kami menyebut metodenya sebagai berikut:
String version = null;
try{
version = getAppVersion();
}
catch (IOException ioe){
ioe.printStackTrace();
}
user.home
. Saat memeriksa file, pertama-tama periksa keberadaan file yang diubah pada sistem file, dan jika tidak ada, muat file default. " BTW "Saya tidak mau .." Apa yang Anda inginkan kurang penting daripada apa yang berhasil dan praktis. Menyimpan aplikasi. pengaturan dalam direktori aplikasi sangat tidak disarankan oleh Oracle & MS (& mungkin yang lain).