最簡單的方式調(diào)試javac源碼

前言

跟JVM不同,javac是用java語言編寫的,所以想要調(diào)試javac源碼是非常簡單的。
之前寫過兩篇文章:

說明

需要說明的是,本文討論的是java版本是java8。
在java8中,官方j(luò)dk是沒有附帶javac源碼的。所以我們只能在openjdk中獲取javac源碼。

  1. 首先下載好openjdk8。

  2. 創(chuàng)建一個(gè)新的java工程。


    image.png
  3. 將javac的源碼導(dǎo)入到工程中,只導(dǎo)入:com.sun.tools.javac.Main即可。

    image.png

    image.png

  4. 解決報(bào)錯(cuò)
    報(bào)錯(cuò)的原因是我們沒有引入com.sun.tools.javac.Main的相關(guān)依賴,簡單說就是classpath中沒有tools.jar。

當(dāng)然如果我們把整個(gè)相關(guān)的源碼引入的話,tools.jar是不需要的。道理是很淺顯的,就是com.sun.tools.javac.Main依賴滿足即可,怎么弄都可以。
引入tools.jar:

image.png

image.png

  1. 運(yùn)行
    執(zhí)行main方法:
    image.png

    相當(dāng)于直接在命令行執(zhí)行javac,沒有任何參數(shù):
    image.png

至此,javac的源碼就運(yùn)行起來了。

編譯HelloWorld

  1. 新建一個(gè)HelloJavac.java
    image.png

可以看到HelloJavac目前是還沒有編譯的。

  1. 配置參數(shù):


    image.png

這里我配置的參數(shù)是:-d $ModuleFileDir$\target\classes $ModuleFileDir$\src\main\java\com\hello\HelloJavac.java 讀者根據(jù)自己的路徑自行更改,宏是從圖紅框里選的。

  1. 編譯結(jié)果


    image.png

更多

如果你想給源碼添加注釋,那除了導(dǎo)入com.sun.tools.javac.Main以外,可以導(dǎo)入更多的類。不過我建議是需要哪個(gè)導(dǎo)入哪個(gè),不用編譯這么多,不注釋的類就用tools.jar里的即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容