重新編譯java類(重新編譯java類為什麼不生成class文件)

  • 1、北大青鳥java培訓:java中的編譯與反編譯?
  • 2、如何將java的class反編譯為.j文本文件?又如何將.j文件重新編譯?
  • 3、編譯源碼 後,怎麼改 java源碼重新編譯
  • 4、反編譯出來的JAVA文件如何重新編譯?

一、什麼是編譯1、利用編譯程序從源語言編寫的源程序產生目標程序的過程。

2、用編譯程序產生目標程序的動作。

編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。

編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。

主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。

二、什麼是反編譯計算機軟件反向工程(Reverseengineering)也稱為計算機軟件還原工程,是指通過對他人軟件的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟件產品所使用的思路、原理、結構、算法、處理過程、運行方法等設計要素,某些特定情況下可能推導出源代碼。

反編譯作為自己開發軟件時的參考,或者直接用於自己的軟件產品中。

三、Java類的編譯與反編譯我們在最初學習Java的時候,會接觸到兩個命令:javac和java,那個時候我們就知道,javac是用來編譯Java類的,就是將我們寫好的helloworld.java文件編譯成helloworld.class文件。

class文件打破了C或者C++等語言所遵循的傳統,使用這些傳統語言寫的程序通常首先被編譯,然後被連接成單獨的、專門支持特定硬件平台和操作系統的二進制文件。

通常情況下,一個平台上的二進制可執行文件不能在其他平台上工作。

而Javaclass文件是可以運行在任何支持Java虛擬機的硬件平台和操作系統上的二進制文件。

那麼反編譯呢,就是通過helloworld.class文件得到java文件(或者說是程序員能看懂的Java文件)四、什麼時候會用到反編譯1、我們只有一個類的class文件,但是我們又看不懂Java的class文件,那麼遼寧java培訓認為可以把它反編譯成我們可以看得懂的文件。

2、學習Java過程中,JDK的每個版本都會加入越來越多的語法糖,有些時候我們想知道Java一些實現細節,我們可以藉助反編譯。

網上有很多的反編譯工具,基本都是簡單的視圖界面形式。你只要選擇對應的class文件的路徑,點反編譯即可。想重新編譯.java文件,如果是單個文件的話,開始–》運行–》cmd–》進入dos命令行,輸入javac 要編譯的文件名即可。如果要編譯整個項目的話,就要藉助TOMCAT,WEBLOGIC等應用服務器軟件了,或者用myeclipse也能自動編譯的。

Java程序的運行需要經歷三個步驟:

編輯

編譯

運行

其中,編輯是編寫源碼的過程,編譯是將源碼編譯成.class文件。運行時,找的就是.class文件,運行程序時,以main函數為入口,開始執行程序,重點是,下次程序運行時,JVM虛擬機不會再次編譯源碼,而是直接尋找對應的.class文件,從而運行程序。

所以,編譯源碼後,如果有新的修改,需要重新編譯,生成.class文件,然後,才會執行。

修改源碼後若不編譯便直接運行,JVM使用的仍然是上一次運行的.class文件。

將class文件反編譯後,可以以java文件保存,但你知道的,在最先將.java文件編譯成.class文件時,裏面的注釋會全部刪除,定義的常量,會以最張代表的那個具體的值代替,有時for循環,甚至會變個樣子,所以,反編譯過來,這些地方都不會變成最先.java文件裏面的樣子。所以,再重新編譯肯定是行不通的。

原創文章,作者:NJ7YJ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/127037.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
NJ7YJ的頭像NJ7YJ
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相關推薦

發表回復

登錄後才能評論