2016-04-27 10 views
0

Ich habe den folgenden Code versucht, aber Java sagt immer noch, es kann die Werte nicht finden. Es funktioniert nur, wenn ich sie in JVM einstelle, bevor ich meinen Code sogar laufen lasse. Ich möchte sie nur mithilfe einer Eigenschaftendatei laden. In meinem Fall wird die Datei geladen put java properties wird nicht gefüllt.Wie setze ich Java jvm Eigenschaften von Laufzeit

Properties prop = new Properties(); 
    InputStream in = MyClass.class.getResourceAsStream("/vars.options"); 
    prop.load(in); 
    in.close(); 
    System.setProperties(prop); 
+0

Sie laden nur Eigenschaften aus einer Datei in eine Hashtable (Eigenschaften). Sie müssen Java wissen lassen, dass Sie diese als Systemeigenschaften anwenden. –

+0

wie? versucht 'System.setProperties (prop);', es ist immer noch nicht wokring –

+0

Sind das die Systemeigenschaften, die Ihr Code benötigt, oder sind diese, dass Java/JVM selbst hängt? Beachten Sie, dass nicht jede Eigenschaft, von der Java/JVM abhängig ist, auf diese Weise festgelegt werden kann (vor der Ausführung Ihres Codes können einige Dinge passieren). –

Antwort

1

Ihr Code legt das Eigenschaftsobjekt nicht auf die Systemeigenschaften fest.

Sie fehlen:

System.setProperties(prop);

Hinweis

Achten Sie auf eine try/catch/finally Anweisung verwenden und Stream im finally Block zu schließen.

Alternativ können Sie das Idiom "try-with-resources" von Java 7 verwenden, da InputStreamAutoCloseable ist.

Beispiel (Java 7 Stil)

try (InputStream in = Main.class.getResourceAsStream("/vars.options")){ 
    Properties prop = new Properties(); 
    prop.load(in); 
    System.setProperties(prop); 
} 
catch (IOException ioe) { 
    // TODO handle 
} 
System.out.println(System.getProperty("my.key")); 

Wenn in Ihrem src Stammordner, die vars.options Datei enthält:

my.key=foo

...

Dieser Druck wird :

foo

+0

Datei wird richtig geladen, ich kann die Ausgabe gut drucken, aber es ändert sich nicht JVM-Eigenschaften. –

+0

@anotherq ah. Habe deine Frage falsch beantwortet. – Mena

+0

@anotherq sehe meine Bearbeitung. – Mena

Verwandte Themen