我想在運行時運行我的應用程序用戶提供的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