2014-02-28 116 views
0

這裏是我做了什麼: -使用Java運行時編譯/運行.java文件?

// compile 
Runtime.getRuntime().exec("javac C:\\dir1\\dir2\\dir3\\Main.java"); 

// run 
Runtime.getRuntime().exec("java C:\\dir1\\dir2\\dir3\\Main"); 

我能夠成功編譯此文件,但不能運行它。我曾嘗試在使用exec("java Main")之前使用exec("cd C:\\dir1\\dir2\\dir3"),但沒有任何好處。有任何想法嗎?

+0

的Java版本? 6或7? – fge

回答

2

使用ProcessBuilder。與Runtime.exec()不同,您在現代代碼中完全不應該使用該代碼,ProcessBuilder允許您設置生成的進程將運行的目錄。 Runtime.exec()不會給你這個選項。

因此:

final Path basePath = Paths.get("C:\\dir1\\dir2\\dir3"); 

final Process compileProcess = new ProcessBuilder("javac", "Main.java") 
    .directory(basePath.toFile()) 
    // other niceties of ProcessBuilder 
    .start(); 

// check the status of the process; rinse, repeat