2016-04-27 25 views
0

次のコードを試しましたが、Javaでは値が見つからないといっています。コードを実行する前にJVMで設定した場合にのみ機能します。プロパティファイルを使用してロードするだけです。 私の場合、ファイルがロードされているときに、put javaプロパティが設定されていません。実行時にJavaのjvmプロパティを設定するには

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

ファイルのプロパティをハッシュテーブル(プロパティ)にロードするだけです。それらをシステムプロパティとして適用することをJavaに知らせる必要があります。 –

+0

どのように? 'System.setProperties(prop);'しようとしましたが、依然としてwokringではありません –

+0

あなたのコードが必要とするシステムプロパティ、またはJava/JVM自体が依存するものですか? Java/JVMが依存するすべてのプロパティをこのように設定することはできません(コードが実行される前にいくつかのことが起こる可能性があります)。 –

答えて

1

コードでは、プロパティオブジェクトをシステムプロパティに設定しません。

あなたが不足している:

System.setProperties(prop);

try/catch/finallyステートメントを使用するとfinallyブロックであなたのストリームをクローズすることを確認してください。

AutoCloseableのように、Java 7の「リソースを試そう」というイディオムを使用することもできます。InputStreamです。

例は、あなたのsrcルートフォルダに、vars.optionsファイルが含まれています(Javaの7スタイル)

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")); 

場合:

my.key=foo

...

これを印刷します:

foo

+0

ファイルが正常にロードされていれば、出力はうまく印刷できますが、JVMプロパティは変更されません。 –

+0

@anotherq ah。あなたの質問は間違っています。 – Mena

+0

@anotherq私の編集を参照してください。 – Mena

関連する問題