日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

compiler java_使用JavaCompiler编译java源文件

發(fā)布時(shí)間:2023/12/8 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 compiler java_使用JavaCompiler编译java源文件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

從1.6版本的JDK開(kāi)始,JDK提供了標(biāo)準(zhǔn)的包可以方便的調(diào)用JVM的編譯器,可以方便的使用JVM的編譯器來(lái)編譯java源文件。JDK提供的調(diào)用接口是JavaCompiler類,該類在JDK的tools.jar包中。

1、使用JavaCompiler接口實(shí)現(xiàn)java文件編譯

String sOutputPath = "D:\\classes";

List paths = new ArrayList();

paths.add("D:\\java\\Test1.java");

paths.add("D:\\java\\Test2.java");

paths.add("D:\\java\\Test3.java");

paths.add("D:\\java\\Test4.java");

paths.add("D:\\java\\Test5.java");

paths.add("D:\\java\\Test6.java");

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

DiagnosticCollector diagnostics = new DiagnosticCollector();

StandardJavaFileManager fileManager = compiler.getStandardFileManager(

diagnostics, null, null);

Location oLocation = StandardLocation.CLASS_OUTPUT;

fileManager.setLocation(oLocation,

Arrays.asList(new File[] { new File(sOutputPath) }));

Iterable extends JavaFileObject> compilationUnits = fileManager

.getJavaFileObjectsFromStrings(paths);

JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager,

diagnostics, null, null, compilationUnits);

boolean result = task.call();

fileManager.close();

2、前面提到tools.jar是JDK提供的包,而當(dāng)在IDE中運(yùn)行實(shí)例時(shí),由于IDE一般配置的JRE是獨(dú)立的JRE,因此在獲取JavaCompiler時(shí)將獲取不到JVM提供的編譯器(獲取方法:JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();),所以會(huì)報(bào)出NullPointerException。解決方法是修改IDE的JRE路徑,修改成JDK中的JRE路徑,Windows->Preferences->Java->Installed JREs選擇右側(cè)表格中的JRE,然后進(jìn)行編輯,將JRE的路徑修改成%JAVA_HOME%/jre路徑,這樣再運(yùn)行就不會(huì)再報(bào)出空指針異常了。

總結(jié)

以上是生活随笔為你收集整理的compiler java_使用JavaCompiler编译java源文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。