私は奇妙な問題に遭遇しました。Windows 7SP164ビットの下にJavaJRE764ビットをインストールしています。また、C /C++コンパイラがインストールされたVisualStudio2010IDEもあります。Java Runtime Execを介してcl.exeコマンドを実行して、コンパイラビルドバージョンを取得しようとしています。
cmd.exeシェルを開き、ディレクトリ "C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7\IDE"で..\.. \ VC \ bin \ cl.exeを実行すると、次の出力が表示されます。
Microsoft(R)32ビットC / C++最適化コンパイラバージョン16.00.40219.01for 80x86 Copyright(C)MicrosoftCorporation。全著作権所有。
使用法:cl[オプション...]ファイル名...[/ link linkoption ...]
しかし、Javaランタイム内で同じコマンドを実行すると、次の出力が得られます。
使用法:cl[オプション...]ファイル名...[/ link linkoption ...]
出力には、2行のスタートアップバナーは含まれていません。また、コンパイラのバージョンとビルド番号を記載したスタートアップバナーが必要です。
コマンドの実行に使用しているJavaテンプレートは次のとおりです。
public static void main(String[] args) {
try {
Process p = Runtime.getRuntime().exec("cmd /d /c chdir /d C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\IDE && ..\\..\\VC\\bin\\cl");
BufferedReader in = new BufferedReader( new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
cl.exeプロセスは、起動されたコンテキストを理解し、起動バナーを無効にできると思います。スタートアップバナーを取得する方法はありますか?