2013-12-16 17 views
29

私のOSはwindows7です。 Javaアプリケーションで環境変数を読んでみたい。私はGoogleを検索し、多くの人々の答えはSystem.getProperty(String name)またはSystem.getenv(String name)メソッドを使用することです。しかし、それは動作していないようです。このメソッドを使用すると、JVMで定義された変数の値を読み取ることができます。JavaでOS環境変数を読み取ることはできますか?

「Config」という名前の環境変数を「some config infomations」という値で設定した場合、Javaでどのように値を取得できますか?

ありがとうございました!

+2

'System.getenv()'は正しい呼び出しです。 –

+4

可能な複製http://stackoverflow.com/questions/461018/how-can-my-java-code-read-os-environment-variables –

+4

また、Windowsでenv変数を変更すると、あなたのコンソール(またはIDEAのようなあなたのエディタ)を再起動する必要があります。 – vikingsteve

答えて

49

次の例のように、System.getenv()を使用する必要があります:IDEから実行する場合

import java.util.Map; 

public class EnvMap { 
    public static void main (String[] args) { 
     Map<String, String> env = System.getenv(); 
     for (String envName : env.keySet()) { 
      System.out.format("%s=%s%n", 
           envName, 
           env.get(envName)); 
     } 
    } 
} 

Javaアプリケーションに渡される追加の環境変数を定義することができます。たとえば、IntelliJ IDEAでは、run configurationの「環境変数」フィールドに環境変数を追加できます。

他のWindows実行可能ファイルと同様に、環境変数へのシステムレベルの変更は、再起動時にプロセスに伝播されることに注意してください(@vikingsteveのコメントに記載)。

詳細については、Javaチュートリアルの「Environment Variables」を参照してください。

System.getProperty(String name)は、環境変数ではないJava system propertiesを取得するためのものです。

+2

@drorbなぜ私は "環境変数"を得ることができないのですか?私はIDEを再起動しなかったからです。^ – William

+0

私と同じです。 IDEを再起動する必要がありました。 – gosua

34

すべてのシステム変数をループせずに特定の環境変数を取得する方法を知りたい方は、getenv(String name)を使用してください。変数の文字列値、または変数がシステム環境で定義されていない場合はnullを返します。

String myEnv = System.getenv("env_name"); 
+0

OSに依存しませんか? – TheByeByeMan

+4

はい、それはenvのいずれかのOSで動作します –

関連する問題