Sie möchten Ihre .properties
Datei also im selben Ordner wie das Haupt- / ausführbare JAR als Datei und nicht als Ressource des Haupt- / ausführbaren JARs behandeln. In diesem Fall lautet meine eigene Lösung wie folgt:
Das erste zuerst: Ihre Programmdatei-Architektur muss so aussehen (vorausgesetzt, Ihr Hauptprogramm ist main.jar und seine Haupteigenschaftendatei ist main.properties):
./ - the root of your program
|__ main.jar
|__ main.properties
Mit dieser Architektur können Sie jede Eigenschaft in der Datei main.properties mit einem beliebigen Texteditor ändern, bevor oder während Ihre main.jar ausgeführt wird (abhängig vom aktuellen Status des Programms), da es sich nur um eine textbasierte Datei handelt. Beispielsweise kann Ihre Datei main.properties Folgendes enthalten:
app.version=1.0.0.0
app.name=Hello
Wenn Sie also Ihr Hauptprogramm aus dem Stamm- / Basisordner ausführen, führen Sie es normalerweise folgendermaßen aus:
java -jar ./main.jar
oder sofort:
java -jar main.jar
In Ihrer Datei main.jar müssen Sie für jede Eigenschaft in Ihrer Datei main.properties einige Dienstprogrammmethoden erstellen. sagen wir dasapp.version
Eigenschaft hat folgende getAppVersion()
Methode:
/**
* 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;
}
In jedem Teil des Hauptprogramms, der den app.version
Wert benötigt, rufen wir seine Methode wie folgt auf:
String version = null;
try{
version = getAppVersion();
}
catch (IOException ioe){
ioe.printStackTrace();
}
user.home
. Wenn Sie nach der Datei suchen, überprüfen Sie zuerst die Existenz von eine geänderte Datei im Dateisystem, und wenn sie nicht vorhanden ist, laden Sie die Standarddatei. " Übrigens "Ich will nicht ..." Was Sie wollen, ist weniger wichtig als das, was funktioniert und praktisch ist. App speichern. Von den Einstellungen im Anwendungsverzeichnis wird sowohl von Oracle als auch von MS (und wahrscheinlich auch von anderen) dringend abgeraten.