gpt4 book ai didi

java - 从另一个java类编译java文件

转载 作者:行者123 更新时间:2023-12-02 06:14:44 24 4
gpt4 key购买 nike

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class ExecuteShellComand {

public static void main(String[] args) {

ExecuteShellComand obj = new ExecuteShellComand();
String className = "str.java";
String command = "javac " + className;
String output = obj.executeCommand(command);
System.out.println(output);// prints the output of the executed command
}

private String executeCommand(String command) {
StringBuffer output = new StringBuffer();
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null) {
output.append(line + "\n");
}

} catch (Exception e) {
e.printStackTrace();
}

return output.toString();

}

}

我正在尝试从另一个 Java 类 (ExecuteShellComand.java) 编译 Java 文件 (str.java)。我想做的是,如果“str.java”编译成功,那么我想执行“java str”命令,但如果编译失败,则应打印正确的堆栈跟踪或错误。我将堆栈跟踪或错误存储在 output 变量中。

但是当我执行此代码时,尽管“str.java”有一些错误 System.out.println(output) 不会打印错误。

最佳答案

如果你想捕获命令中的错误,那么你应该捕获错误流而不是输入流

所以替换

BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));

BufferedReader reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));

关于java - 从另一个java类编译java文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21598359/

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