中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

JDK6.0如何使用CompilerAPI

這篇文章將為大家詳細講解有關JDK6.0如何使用Compiler API,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

撫松網站建設公司創新互聯,撫松網站設計制作,有大型網站制作公司豐富經驗。已為撫松近1000家提供企業網站建設服務。企業網站搭建\成都外貿網站建設公司要多少錢,請找那個售后服務好的撫松做網站的公司定做!

現在我們可以用JDK6 的Compiler API(JSR 199)去動態編譯Java源文件,Compiler API結合反射功能就可以實現動態的產生Java代碼并編譯執行這些代碼,有點動態語言的特征。這個特性對于某些需要用到動態編譯的應用程序相當有用, 比如JSP Web Server,當我們手動修改JSP后,是不希望需要重啟Web Server才可以看到效果的,這時候我們就可以用Compiler API來實現動態編譯JSP文件,當然,現在的JSP Web Server也是支持JSP熱部署的,現在的JSP Web Server通過在運行期間通過Runtime.exec或ProcessBuilder來調用javac來編譯代碼,這種方式需要我們產生另一個進程去做編譯工作,不夠優雅而且容易使代碼依賴與特定的操作系統;Compiler API通過一套易用的標準的API提供了更加豐富的方式去做動態編譯,而且是跨平臺的。 下面代碼演示了Compiler API的使用:

public class CompilerAPITester {
private static String JAVA_SOURCE_FILE = "DynamicObject.java";
private static String JAVA_CLASS_FILE = "DynamicObject.class";
private static String JAVA_CLASS_NAME = "DynamicObject";
public static void main(String[] args) {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
generateJavaClass();
try {
 //將產生的類文件拷貝到程序的ClassPath下面,下面這一行代碼是特定于Windows+IntelliJ IDEA 6.0項目,不具有移植性
 Runtime.getRuntime().exec("cmd /c copy "+JAVA_CLASS_FILE+" classesproductionJDK6Features");
 Iterable sourcefiles = fileManager.getJavaFileObjects(JAVA_SOURCE_FILE);
 compiler.getTask(null, fileManager, null, null, null, sourcefiles).call();
 fileManager.close();
 Class.forName(JAVA_CLASS_NAME).newInstance();//創建動態編譯得到的DynamicObject類的實例
} catch (Exception ex) {
 ex.printStackTrace();
}
}

public static void generateJavaClass(){
try {
 FileWriter fw = new FileWriter(JAVA_SOURCE_FILE);
 BufferedWriter bw = new BufferedWriter(fw);
 bw.write("public class "+JAVA_CLASS_NAME+"{");
 bw.newLine();
 bw.write("public "+JAVA_CLASS_NAME+"(){System.out.println("In the constructor of DynamicObject");}}");
 bw.flush();
 bw.close();
} catch (IOException ex) {
 ex.printStackTrace();
}
}
}


程序運行后,會產生DynamicObject.java和DynamicObject.class兩個文件,并在控制臺輸出:

In the constructor of DynamicObject

關于“JDK6.0如何使用Compiler API”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

分享標題:JDK6.0如何使用CompilerAPI
文章源于:http://m.2m8n56k.cn/article32/jdsssc.html

成都網站建設公司_創新互聯,為您提供云服務器網站策劃動態網站外貿網站建設品牌網站制作

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

外貿網站建設
主站蜘蛛池模板: 日韩一级片免费看 | 国产91精品一区 | aaa毛片手机在线现看 | 玖玖在线免费视频 | 品色堂永久免费 | 欧美激情欧美狂野欧美精品免费 | 国内免费视频成人精品 | 日韩一级性生活片 | 日本亚洲成高清一区二区三区 | 日韩在线播放中文字幕 | 欧美日韩精品一区二区另类 | 国产精品va一级二级三级 | 日本韩国一级毛片中文字幕 | 国产情侣真实露脸在线最新 | 国产精品91在线 | 在线日韩中文字幕 | 免费一级毛片在线播放视频 | 欧美自拍另类 | 成人久久18网站 | 国产精品亚洲一区二区三区在线观看 | 久久99国产精品亚洲 | 免费欧洲毛片a级视频 | 91一区二区视频 | 国产免费一级在线观看 | 成人国产亚洲 | 欧美极品video粗暴 | 手机在线观看亚洲国产精品 | 色老头老太做爰视频在线观看 | 国产精品亚洲第一区柳州莫青 | 欧美成人aaa大片 | 国产精品免费观看视频播放 | 一级片高清 | 国产精品视频免费观看调教网 | 亚洲国内精品自在线影视 | 久久久综合久久 | 亚洲美女视频一区二区三区 | 久久老司机波多野结衣 | 精品无人区一区二区三区a 精品午夜国产在线观看不卡 | 性色a v 一区 | 国产精品久久久久久久免费大片 | 亚洲精品永久一区 |