0

この小さな Java コードは、実行環境に応じて異なる出力を生成します。

ProcessBuilder builder = new ProcessBuilder( "cmd", "/c", "set" );
builder.directory( new File("c:/") );
Process p = builder.start();

System.out.println(System.getenv("PATH"));

コマンド プロンプトで実行すると、完全な PATH 変数が示されます。この変数は、[システム プロパティ] -> [環境変数] (PATH) に移動するか、cmd を使用して set と入力し、PATH 変数を検索することによっても表示されます。

Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Perforce;C:\Program Files\GnuWin32\bin;

Eclipse で実行すると、PATH 変数も示されますが、システム自体の変数とは一致しません。

Path=C:/Program Files/Java/jre7/bin/client;C:/Program Files/Java/jre7/bin;C:/Program Files/Java/jre7/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Perforce;C:\eclipse;

問題は、プロセスビルダーを使用して Java 環境で外部アプリケーション (openssl) を実行する必要があることです。そのアプリケーションのパスも Path 変数に記述されています。ただし、Eclipse を使用してコードを実行する場合 (この場合は必須)、このパスは使用できません。

したがって、なぜこれが当てはまるのか、どのように解決するのかまったくわかりません。実行中のクラスを hdd にストリーミングし、別のプロセスビルダーを使用してそのクラスを実行しようとしましたが、それでもパス変数は予想されるものと等しくありません (継承による推測)

システム自体が行うのと同じように、Eclipse を使用して Path 変数の同じ内容を取得する方法の手がかりがあれば、それを指摘してください。

ところで。WINDOWS マシンの使用と Kepler ビルドの使用

4

0 に答える 0