【java】javac編譯多個有依賴關系的java文件為class文件


 

歷史文章:

【jar】JDK將單個的java文件打包為jar包,並引用到項目中使用【MD5加密】

【java】javac命令在win10不可用,提示javac不是內部或外部命令,也不是可運行的程序【解決方法】

【javac命令不能使用,提示不是內部命令或外部命令,請查看歷史文章】

 

=================需求說明==========================

之前的文章中,僅說明了單個的java文件,沒有多的外部依賴的單個java文件編譯成class文件。

1.現在有個需求:

  在使用一個mybatis-gen-1.2.jar包完成 自動代碼生成過程中,【jar包中全是已經編譯好的class文件】發現某個地方的源碼寫的有問題。

  現在需要通過將class文件反編譯成 java文件,修改源碼后,再將java文件編譯成可以使用的class文件,以完成這次需求。

 

2.可以看到,jar包中的文件全是編譯的class文件

 

 

 

===================處理方式========================

1.將class文件拖拽至 IDEA中,就可以看到源碼了

 

 

 

 

2.將class文件中的內容,拷貝到一個新建的同名java文件中,然后可以進行修改源碼的操作

【因為class文件中的源碼無法直接修改,因此將整個文件中的源碼拷貝至  一個新建的同名java文件中】

 

 

 

現在代碼可以操作了,就直接刪除問題代碼行

 

 

 

 

 

 

3.現在,按照源碼的包路徑,在任意的一個文件下,按照包路徑創建層級目錄,再將文件放入對應目錄中

 

 

 

 

 

 

4.這個時候,單獨執行編譯命令,是不能成功編譯文件的,因為本源文件還依賴了其他幾個源碼文件

 

 

 

 

 

從剛剛的源碼可以看出來,本文件是依賴了其他幾個文件的:

 

 

 

 

5.所以,需要將本文件依賴的其他幾個源碼文件,按照相同的方式,打開class文件,新建同名java文件,復制源碼到同名java文件,然后創建對應的包路徑,將java文件放入對應位置

 

 

 

 

 

 

 

 

 

6.分別放置完成后,新創建一個source.txt文件,將多個需要編譯class的java文件,完整路徑放在source文件中,注意,文件之間有依賴關系的話,將被依賴的文件放在前面,依賴別的文件的放在后面,保證編譯的順序

 

 

 

 

 

7.最后,cmd進入到source.txt文件所在路徑,執行javac命令,開始編譯工作

javac -encoding utf-8 @source.txt -Xlint:unchecked

注意加上參數

-Xlint:unchecked

以保證取消驗證,順利編譯成功

 

注意,source.txt文件前面有一個@符號

 

 

 

 

 

編譯完成,就可以看到各個目錄下,已經生成的class文件

 

 

 

 

 

 

 

8.最后,將編譯好的class文件,放入jar包中,替換原本有問題的class文件

 

 

 

9.完成【多個有依賴關系的class文件,復制轉化成java文件,修改完源碼並重新編譯成class文件的】操作!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM