Итак, вы хотите обрабатывать свой .properties
файл в той же папке, что и основной / работающий jar, как файл, а не как ресурс основного / работающего 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
. При проверке файла сначала проверьте наличие измененный файл в файловой системе, и если он не существует, загрузить файл по умолчанию ». Кстати, «Я не хочу ..» То, что вы хотите, менее важно, чем то, что работает и практично. Хранение приложения. как Oracle, так и MS (и, возможно, другие) настоятельно не рекомендуют настройки в каталоге приложения.