您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關JDK6.0中如何使用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兩個文件,并在控制臺輸出
關于“JDK6.0中如何使用Compiler API”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。