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

 

歷史文章:html

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

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

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

 

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

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

1.如今有個需求:

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

  如今須要經過將class文件反編譯成 java文件,修改源碼後,再將java文件編譯成可使用的class文件,以完成此次需求。url

 

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

 

 

 

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

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

 

 

 

 

2.將class文件中的內容,拷貝到一個新建的同名java文件中,而後能夠進行修改源碼的操做

【由於class文件中的源碼沒法直接修改,所以將整個文件中的源碼拷貝至  一個新建的同名java文件中】3d

 

 

 

如今代碼能夠操做了,就直接刪除問題代碼行code

 

 

 

 

 

 

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

 

 

 

 

 

 

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文件的】操做!!!

相關文章
相關標籤/搜索