我想在运行时运行我的应用程序用户提供的java文件。在运行时运行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。海尔是在控制台输出:
javac C:/Users/Maher/workspace/1/src/main/java/model/MyClass.java exitValue() 0
我使用的Windows 7
Eclipse和我想显示“我被调用的方法”来测试该解决方案,但它并没有显示出来。
任何帮助?谢谢!
该类文件是一个二进制文件。 – maba
类文件确实是一个二进制文件。这在我的电脑上正常工作。 – damned
还要注意有一个API来访问Java编译器:http://docs.oracle.com/javase/7/docs/api/javax/tools/JavaCompiler.html – Puce