當前位置:首頁 » 編程軟體 » java如何編譯源文件

java如何編譯源文件

發布時間: 2025-02-04 10:54:15

『壹』 怎麼動態編譯Java源文件

(Write once, run anywhere)」 的目標。Java類文件中包含的位元組代碼可以被不同平台上的JVM所使用。Java位元組代碼不僅可以以文件形式存在於磁碟上,也可以通過網路方式來下載,還可以只存在於內存中。JVM中的類載入器會負責從包含位元組代碼的位元組數組(byte[])中定義出Java類。在某些情況下,可能會需要動態的生成 Java位元組代碼,或是對已有的Java位元組代碼進行修改。這個時候就需要用到本文中將要介紹的相關技術。首先介紹一下如何動態編譯Java源文件。
動態編譯Java源文件
在一般情況下,開發人員都是在程序運行之前就編寫完成了全部的Java源代碼並且成功編譯。對有些應用來說,Java源代碼的內容在運行時刻才能確定。這個時候就需要動態編譯源代碼來生成Java位元組代碼,再由JVM來載入執行。典型的場景是很多演算法競賽的在線評測系統(如PKU JudgeOnline),允許用戶上傳Java代碼,由系統在後台編譯、運行並進行判定。在動態編譯Java源文件時,使用的做法是直接在程序中調用Java編譯器。
JSR 199引入了Java編譯器API。如果使用JDK 6的話,可以通過此API來動態編譯Java代碼。比如下面的代碼用來動態編譯最簡單的Hello World類。該Java類的代碼是保存在一個字元串中的。
publicclassCompilerTest{
publicstaticvoidmain(String[]args)throwsException{
Stringsource="publicclassMain{publicstaticvoidmain(String[]args){System.out.println(\"HelloWorld!\");}}";
JavaCompilercompiler=ToolProvider.getSystemJavaCompiler();
=compiler.getStandardFileManager(null,null,null);
=newCompilerTest.StringSourceJavaObject("Main",source);
Iterable<extendsJavaFileObject>fileObjects=Arrays.asList(sourceObject);
CompilationTasktask=compiler.getTask(null,fileManager,null,null,null,fileObjects);
booleanresult=task.call();
if(result){

熱點內容
android動態添加fragment 發布:2025-09-24 23:06:36 瀏覽:778
java密鑰生成 發布:2025-09-24 23:01:25 瀏覽:435
電腦讀不出加密u盤 發布:2025-09-24 22:46:46 瀏覽:742
圖形界面安裝linux 發布:2025-09-24 22:21:05 瀏覽:958
預編譯一個網頁程序的好處 發布:2025-09-24 22:12:38 瀏覽:884
榮耀熱點密碼是多少 發布:2025-09-24 21:59:19 瀏覽:227
龍珠d加密 發布:2025-09-24 21:53:52 瀏覽:55
什麼軟體下載安卓市場 發布:2025-09-24 21:26:40 瀏覽:321
發簡訊php 發布:2025-09-24 21:26:00 瀏覽:775
電腦是怎麼存儲數字的 發布:2025-09-24 21:00:24 瀏覽:777