私のJavaプログラムからのSETコマンドだけを持つアプリケーションインストール場所から.batファイルを実行する必要があります。私はProcessBuilderプロセスに.bat環境変数を設定する方法
以下ProcessBuilder pb = new ProcessBuilder("cmd", "/c","C:\\apps\\vars.bat");
pb.command("C:\\apps\\test.exe","-u=user1", "-p=pwd1");
pb.redirectErrorStream(true);
pb.redirectOutput(outputFile);
Process process = pb.start();
try {
process.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
process.getOutputStream().close();
InputStream is = process.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is));
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
}
以下のように実行しようとした
がVARS.BATコンテンツである
@rem Defined by Install. Please Do NOT Remove The Following Lines.
set VAR1=110002020150715
set DB_CONNECT=test
set DB_SERVER=localhost
set ORACLE_SID=test
set XML_ENCODING=ISO-8859-1
問題は、Javaプログラムは、.BATファイルで設定した環境変数のいずれかを認識していないです。
vars.batとtest.exeはどちらもアプリケーションのインストール場所です。 test.exeを実行するには、まずvars.batを実行する必要があります.Exeが.batファイルに設定された変数を使用してアプリケーションに接続するためです。
.Batファイルに設定された環境変数をProcessBuilder 。
Javaプログラムが.batファイルで設定した環境変数を認識しないことをどのように知っていますか。この 'System.out.println(System.getenv(" JAVA_HOME "));'をチェックし、同じ方法で.batに設定したenv varを出力しようとします。 –
印刷のヌル値 – Mohan
@Mohanあなたの質問を編集して、 'C:\ apps \ vars.bat'ファイルの内容を追加してください。また、Javaプログラムの完全なソースコードを追加して、環境変数を読み込もうとします。 – Progman