gpt4 book ai didi

java - 通过 Java 运行时运行时,Microsoft C++ 中缺少启动横幅

转载 作者:行者123 更新时间:2023-11-30 04:33:25 25 4
gpt4 key购买 nike

我遇到了一个奇怪的问题。我在 Windows 7 SP1 64 位下安装了 Java JRE 7 64 位。我还安装了带有 C/C++ 编译器的 Visual Studio 2010 IDE。我试图通过 Java Runtime Exec 执行 cl.exe 命令来获取编译器构建版本。

当我打开 cmd.exe shell 并在目录“C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE”中执行 ..\..\VC\bin\cl.exe 时,我得到这个输出:

适用于 80x86 的 Microsoft (R) 32 位 C/C++ 优化编译器版本 16.00.40219.01版权所有 (C) 微软公司。保留所有权利。

用法:cl [ 选项... ] 文件名... [/link 链接选项... ]

但是当我在 Java 运行时中执行相同的命令时,我得到以下输出:

用法:cl [ 选项... ] 文件名... [/link 链接选项... ]

输出不包含 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 进程能够理解它启动的上下文并禁用启动横幅。知道如何获得启动横幅吗?

最佳答案

这是因为 cl.exe 正在将横幅发送到错误流。阅读 p.GetErrorStream() 以查找横幅。您可以通过执行 cl 来验证命令提示符上的情况是否如此:

cl 2>%userprofile%\Desktop\error.txt

请注意,横幅不会出现,但会路由到您的桌面\error.txt。

关于java - 通过 Java 运行时运行时,Microsoft C++ 中缺少启动横幅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14048631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com