使用javac命令生成.class文件的注意事項

前幾天一個沒有源代碼的java項目出了一個問題,有一個功能無法正常使用。

通過查看Tomcat的異常日誌,定位到了一個.class文件裏面的方法,於是就想着將其反編譯成.java文件,改完之後再編譯成.class文件替換回去。

反編譯使用的jadx工具,不在這裏贅述。

但是改完之後,用javac生成.class文件時,一直不成功,報出很多錯誤,找不到這個包那個包的。

在網上找了一圈,對於jar包,將其放入jre\lib\ext目錄之後,編譯沒出錯了。

但是,那個java文件本身還引用了一些.class文件,一直無法通過編譯,嘗試了各種網上找的辦法,比如將.class放到jdk的bin目錄,比如把java文件放到.class文件一起,比如環境變量裏面將classpath設爲.class文件的目錄,均無法成功。

最後,還是在網上找到了一個方法,終於成功了。

首先,將.class文件按其包的名稱建一個層級目錄,比如.class的package是com.a.b.c,那麼就建4層目錄com\a\b\c,將.class文件放到c裏面,com目錄放在D:\java\下,然後,在cmd中執行如下命令:

javac a.java -cp "D:\java\"

就可以成功生成了。

另外,需要特別注意的是,如果是在服務器上進行生成操作,那麼ext目錄下的jar包在生成完後,記得立刻刪除,否則重啓Tomcat之後,它會優先使用ext目錄下的jar包,然後你的整個網站就等着報404錯誤吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章