gpt4 book ai didi

java - 从 cmd 获取输出 java 编译

转载 作者:太空宇宙 更新时间:2023-11-04 06:25:41 25 4
gpt4 key购买 nike

我有一个项目,使用命令提示符编译java文件,然后在控制台中打印结果,这是我的代码。

public static void main(String[] args) {
String line;
String output = "";
try {
Process p = Runtime.getRuntime().exec("java helloworld");
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
output += (line + '\n');
}
input.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
System.out.print(output);
}

但是它什么也没显示,尽管它可以与另一个命令一起使用,请帮助我。

最佳答案

正如一位评论者提到的,这可能会导致您遇到相当复杂的设置。在您的情况下,很可能在 java 中发生错误,并且您只是看不到输出,因为错误消息被写入 STDERR 流而不是 STDOUT。

因此有两个选择(1)您使用已有的代码并尝试从进程的 ErrorStream 中读取。

Bufferedreader error = new BufferedReader(new InputStreamReader(p.getErrorStream());

或者,如果您不关心正在启动的进程是写入 STDERR 还是 STDOUT,您也可以使用 ProcessBuilder,并将其设置为重定向错误流。

ProcessBuilder pb = new ProcessBuilder("java", "helloworld");
pb.redirectErrorStream(true); // this redirects STDERR to STDOUT
Process p = pb.start();
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
output += (line + '\n');
}
input.close();

为了简单起见,我省略了上面的所有样板代码和异常处理。但我想你会明白的。

关于java - 从 cmd 获取输出 java 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26826715/

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