Отже, ви хочете розглядати свій .properties
файл у тій же папці, що і основний / запущений jar, як файл, а не як ресурс основної / запущеної банки. У цьому випадку моє власне рішення полягає в наступному:
Перше, що спочатку: ваша архівація програмного файлу має бути такою (якщо припустимо, що ваша основна програма main.jar, а файл її основних властивостей main.properties):
./ - the root of your program
|__ main.jar
|__ main.properties
За допомогою цієї архітектури ви можете змінювати будь-яке властивість у файлі main.properties, використовуючи будь-який текстовий редактор до або під час роботи вашого main.jar (залежно від поточного стану програми), оскільки це лише текстовий файл. Наприклад, ваш файл main.properties може містити:
app.version=1.0.0.0
app.name=Hello
Отже, коли ви запускаєте свою основну програму з кореневої / базової папки, зазвичай ви запускаєте її так:
java -jar ./main.jar
або, відразу:
java -jar main.jar
У своєму main.jar потрібно створити кілька утилітних методів для кожного ресурсу, знайденого у вашому файлі main.properties; скажімо, app.version
властивість матиме getAppVersion()
такий спосіб:
/**
* 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;
}
У будь-якій частині основної програми, яка потребує app.version
значення, ми називаємо її метод таким чином:
String version = null;
try{
version = getAppVersion();
}
catch (IOException ioe){
ioe.printStackTrace();
}
user.home
. Перевіряючи файл, спочатку перевірте наявність змінений файл у файловій системі, і якщо його не існує, завантажте файл за замовчуванням. " BTW "Я не хочу .." Те, що ви хочете, є менш важливим, ніж те, що працює і є практичним. Зберігання програми. налаштування в каталозі додатків сильно перешкоджають Oracle та MS (і, можливо, іншими).