我想在运行时运行我的应用程序用户提供的 java 文件。
我试过了:
Process p1 = Runtime.getRuntime().exec("javac MyClass.java");
p1.waitFor();
Process p2 = Runtime.getRuntime().exec("java MyClass");
p2.waitFor();
但它不起作用。它创建一个类文件,但它不创建一个二进制文件。
有什么建议吗?
我会准确地说我在做什么:
所以这是我的java文件:
public class MyClass {
public void myMethod(){
System.out.println("My Method Called");
}
}
这是我试图编译和执行这个类的代码:
public class TestExecute {
private static void printLines(String name, InputStream ins) throws Exception {
String line = null;
BufferedReader in = new BufferedReader(
new InputStreamReader(ins));
while ((line = in.readLine()) != null) {
System.out.println(name + " " + line);
}
}
private static void runProcess(String command) throws Exception {
Process pro = Runtime.getRuntime().exec(command);
printLines(command + " stdout:", pro.getInputStream());
printLines(command + " stderr:", pro.getErrorStream());
pro.waitFor();
System.out.println(command + " exitValue() " + pro.exitValue());
}
public static void main(String[] args) {
try {
runProcess("javac MyClass.java");
runProcess("java MyClass");
} catch (Exception e) {
e.printStackTrace();
}
}
}
在路径中,创建了 MyClass.class。Hier 是控制台中的输出:
javac C:/Users/Maher/workspace/1/src/main/java/model/MyClass.java exitValue() 0
我在 Windows 7 上使用 Eclipse。
我想显示“我的方法调用”来测试这个解决方案,但它没有显示。
有什么帮助吗?谢谢!