2009-06-26 13 views

答えて

1

Java APIから静かに環境変数にアクセスする方法はありません。このようなコードでのRuntime.execであることを達成する唯一の方法:あなたはJava変数System.getPropertiesのおかげで()にアクセスすることができますが

Process p = null; 
Runtime r = Runtime.getRuntime(); 
String OS = System.getProperty("os.name").toLowerCase(); 
// System.out.println(OS); 
if (OS.indexOf("windows 9") > -1) { 
    p = r.exec("command.com /c set"); 
} 
else if ((OS.indexOf("nt") > -1) 
     || (OS.indexOf("windows 2000") > -1) 
     || (OS.indexOf("windows xp") > -1)) { 
    // thanks to JuanFran for the xp fix! 
    p = r.exec("cmd.exe /c set"); 
} 

。 しかし、あなたは唯一のあなたが詳細については、「-Dkey =値」でjavaコマンドラインで

を提供することができ、いくつかのenv JVM自体によってマッピングされた変数、および追加データがhttp://www.rgagnon.com/javadetails/java-0150.html

+0

これは参考になりまし..ですちょうど私SETの出力を解析する代わりに、echo%env_variable_name%を使用して直接値を取得してください。 –

+1

私はコマンドをパイプにJavaを学ばなかった=/ –

+0

これは、実行中のJavaプログラムに設定されている環境変数が環境変数のグローバルセットと異なる場合、それを見つけるのに役立ちません。 –

1

を参照してくださいになるだろうとJVMにそれらを渡します-Dシステムのプロパティー。たとえば、次のようになります。

java -D<java var>=%<environment var>% 

このようにして、特定のOSに縛られることはありません。

4

これにはJVMのスイッチがあります。 hereから:

Start the JVM with the "-D" switch to pass properties to the application and read them with the System.getProperty() method.

SET myvar=Hello world 
SET myothervar=nothing 
java -Dmyvar="%myvar%" -Dmyothervar="%myothervar%" myClass 

then in myClass

String myvar = System.getProperty("myvar"); 
String myothervar = System.getProperty("myothervar"); 
7

あなたは、環境変数を取得するためのgetenv()を使用することができます。

String variable = System.getenv("WINDIR"); 
System.out.println(variable); 

私はのgetenv()関数はいくつかの点で廃止されましたと信じていますがjava 1.5で後で "非推奨"となりました

ETA:

私はこの質問がjava 1.4を特に指しているので、これはあなたのためには機能しません(少なくとも、廃止予定の警告に終わるかもしれません)。私はここに答えを残しておきますが、誰か他の人がこの質問に遭遇し、それ以降のバージョンを使用している場合に備えておきます。

+0

これは、現代のJava版では「答え」です。ありがとう! – Dale

+0

推奨されていません。 ) –

+1

"java.lang.Error:getenvはサポートされなくなりました。代わりにプロパティと-Dを使用します"という例外をスローする "最近の" Java 1.4 VMでは動作しません。 – jhunovis

0
Map<String, String> env = System.getenv(); 
for (String envName : env.keySet()) { 
    System.out.format("%s=%s%n", envName, env.get(envName)); 
} 
0

のApache CommonsのExecは "org.apache.commons.exec.environment.EnvironmentUtils" とJDKの1.5より前の環境変数を取得する方法を提供します:

(String) EnvironmentUtils.getProcEnvironment().get("SOME_ENV_VAR") 
関連する問題