有的時(shí)候我們需要運(yùn)行一段外部的java程序,這時(shí)候就要使用到到動(dòng)態(tài)加載:
? ? ? ? 使用:
????????????JavaCompiler? compiler? =? ToolProvider.getSystemJavaCompiler(); //獲得動(dòng)態(tài)編譯器
????????????int result = compiler.run(null,null,null,"path"); //運(yùn)行java文件

參數(shù)解釋:
前3個(gè)參數(shù)分別用來為java編譯器提供參數(shù)、得到Java編譯器的輸出信息及接收編譯器的錯(cuò)誤信息,后面的可變參數(shù)能傳入一個(gè)或多個(gè)Java源程式文件。如果run編譯成功,返回0。?
int run ( InputStream in ,? OutputStream out ,? OutputStream? err ,? String… arguments)?
如果前3個(gè)參數(shù)傳入的是null,那么run方法將以標(biāo)準(zhǔn)的輸入、輸出代替,即System.in、System.out和System.err。如果我們要編譯一個(gè)test.java文件,并將使用標(biāo)準(zhǔn)輸入輸出,run的使用方法如下:
? ? ? ? ? ? 第一個(gè):為java編譯器提供參數(shù),如果為空(null)的話,使用?鍵盤 輸入(System.in)
????????????第二個(gè):得到Java編譯器的輸出信息,如果為空(null)的話,輸出到控制臺(tái)(System.out)
????????????第三個(gè):接收編譯器的錯(cuò)誤信息,如果為空(null)的話,錯(cuò)誤信息輸出到控制臺(tái)(System.err)
????????????第四個(gè):需要執(zhí)行的java文件路徑,是一個(gè)? 可變參數(shù),可以傳入多個(gè)?String ,即可以運(yùn)行多個(gè)java文件
一般情況下前三個(gè)都是null就好了
返回一個(gè) int 類型:
? ? 為 0?表示成功,非0表示失敗