Ⅰ java 使用或覆蓋了已過時的 API,要了解詳細信息,請使用 -Xlint:deprecation 重新編譯。怎麼解決
出現這個提示的本質原因是:在你的源代碼中,使用JDK中的類的時候,調用了已經過時的方法。所謂過時方法,是有些沒有真正實現的方法,或存在潛在問題的方法。這些方法一般情況下,目前的JDK還支持,但在未來的某個版本中,可能就會取消的。所以,在本地使用的代碼不必擔心這個問題;要移值到其它計算機的程序必須要解決這個問題。
這些過時的方法在JDK的更高版本中,絕對大多數提供了替換方法,少部分是要放棄了。想改好程序,就要找到能夠替代的方法,來修改代碼。能替代的方法查閱API文檔就能看到,在方法目錄中,過時的方法有「已過時」的說明,在方法明細里能看到被哪個方法代替了。
Ⅱ java class怎麼重新編譯
方法如下: 點擊菜單-Project-Build Automatically,這個勾選上。 Build Automatically 的意思是自動編譯,選擇的功能就是,你在修改代碼保存的時候,就編譯了。 點擊菜單-Project-Build All或Build Project。
Ⅲ 編譯源碼 後,怎麼改 java源碼重新編譯
Java程序的運行需要經歷三個步驟:
編輯
編譯
運行
其中,編輯是編寫源碼的過程,編譯是將源碼編譯成.class文件。運行時,找的就是.class文件,運行程序時,以main函數為入口,開始執行程序,重點是,下次程序運行時,JVM虛擬機不會再次編譯源碼,而是直接尋找對應的.class文件,從而運行程序。
所以,編譯源碼後,如果有新的修改,需要重新編譯,生成.class文件,然後,才會執行。
修改源碼後若不編譯便直接運行,JVM使用的仍然是上一次運行的.class文件。
Ⅳ 怎麼強制編譯出錯的java源代碼
可以強制編譯錯誤代碼的,只要直接「ctrl+s」保存文件即可。
解釋:文件有錯誤,那麼機器語言不能很靈活的實現文件編譯,所以編譯的結果中會有錯誤(「throw new RuntimeException」,運行時錯誤)。如下圖:
Ⅳ 用小穎java源代碼反編譯編譯出來的java無法轉換成class
這點很正常
沒有哪個反編譯工具是萬能的
有很多情況都導致它無法成功的反編譯,比如你的class文件中用到了一些新的類庫或者其他公司的類庫(例如:你的反編譯工具是基於jdk1.4的,但是class文件用到了jdk1.6的類),或者jar文件經過了混淆。
Ⅵ 反編譯出來的JAVA文件如何重新編譯
java程序編譯成class文件,當中存放的是機器碼,供java虛擬機調用,你在一般編譯器中是打不開class文件的,有個叫jd-gui的編譯器可以將class文件重新編譯成java文件
Ⅶ 如何將java源代碼編譯成.class
如果你用的是相應的編輯器
在工具欄上有編譯
如果用的是記事本
改後綴名後吧文件保存在安裝jdk的目錄下
然後啟動命令提示符
輸入javac
xx.java
xx.java
為你的java源代碼
Ⅷ 簡述JAVA程序的編輯編譯和運行過程
第一步(編譯): 創建完源文件之後,程序會先被編譯為.class文件。Java編譯一個類時,如果這個類所依賴的類還沒有被編譯,編譯器就會先編譯這個被依賴的類,然後引用,否則直接引用,這個有點象make。
如果java編譯器在指定目錄下找不到該類所其依賴的類的.class文件或者.java源文件的話,編譯器話報「cant find symbol」的錯誤。
第二步(運行):java類運行的過程大概可分為兩個過程:1、類的載入 2、類的執行。需要說明的是:JVM主要在程序第一次主動使用類的時候,才會去載入該類。也就是說,JVM並不是在一開始就把一個程序就所有的類都載入到內存中,而是到不得不用的時候才把它載入進來,而且只載入一次。
特別說明:java類中所有public和protected的實例方法都採用動態綁定機制,所有私有方法、靜態方法、構造器及初始化方法<clinit>都是採用靜態綁定機制。而使用動態綁定機制的時候會用到方法表,靜態綁定時並不會用到。
(8)java源碼重編譯擴展閱讀:
Java整個編譯以及運行的過程相當繁瑣,本文通過一個簡單的程序來簡單的說明整個流程。
Java代碼編譯:是由Java源碼編譯器來完成;
Java位元組碼的執行:是由JVM執行引擎來完成
Java程序從源文件創建到程序運行要經過兩大步驟:
1、源文件由編譯器編譯成位元組碼(ByteCode)
2、位元組碼由java虛擬機解釋運行。因為java程序既要編譯同時也要經過JVM的解釋運行,所以說Java被稱為半解釋語言( "semi-interpreted" language)。
Ⅸ 怎樣把java的源碼編譯成class文件
用dos就可以,點開始--運行cmd--找到你要編譯的java文件的地址然後javac 加上你的文件名就編譯出來了注意javac和文件名之間要加空格
Ⅹ JAVA反編譯軟體
由於JAVA語言安全性高、代碼優化、跨平台等特性,從1995年5月由SUN公司發布後,迅速取代了很多傳統高級語言,占據了企業級網路應用開發等諸多領域的霸主地位。
不過,JAVA最突出的跨平台優勢使得它不能被編譯成本地代碼,而要以中間代碼的形式運行在虛擬機環境中,這使得JAVA的反編譯要比別的高級語言容易實現,並且反編譯的代碼經過優化後幾乎可以與源代碼相媲美。
為了更好地保護知識產權,避免本公司的智力成果輕易被人竊取,開發者有必要對反編譯工具深入了解,以便有針對性地採取保護措施。
目前,比較流行的JAVA反編譯工具有近30種,其中有三款堪稱精品:
一、 應用廣泛的JAD
在眾多的JAVA反編譯工具中,有幾種非常著名的工具使用了相同的核心引擎——JAD,其中主要包括:Front End Plus、mDeJava、Decafe Pro、Cavaj Java Decompiler、DJ Java Decompiler、NMI』s Java Class Viewer和國產的JAVA源代碼反編譯專家。
JAD本身是一個命令行工具,沒有圖形界面,上述的這些工具大多是在JAD內核的基礎之上加了一個圖形界面而已。這么多種產品的共同選擇,足可證明JAD在JAVA反編譯領域中的尊貴地位。
JAD是使用Microsoft Visual C++開發的,運行速度非常快,可以處理很復雜的JAVA編譯文件。眾多的參數使JAD可以靈活應付多種加密手段,令反編譯的代碼更加優化和易讀。由於JAD參數太多,沒必要一一解釋,其中有幾個最常用的如下(以JAD 1.5.8f版本為例):
-d
- 用於指定輸出文件的目錄
-s - 輸出文件擴展名(默認為: .jad),通常都會把輸出文件擴展名直接指定為.java,以方便修改的重新編譯。
-8 - 將Unicode字元轉換為ANSI字元串,如果輸出字元串是中文的話一定要加上這個參數才能正確顯示。
最常用的反編譯指令如下所示:
Jad –d c:\javasource –s .java -8 javatest.class
這條指令將當前目錄下的javatest.class反編譯為javatest.java並保存在c:\javasource目錄里,其中的提示輸出為中文,而不是Unicode代碼。
二、 源碼開放的JODE
JODE是全球最大的開源項目網站Sourceforge.net的成員,在所有的JAVA反編譯器中,JODE的反編譯效果是最好的,尤其是對付一些常見的加密手段,例如混淆技術等,更是出類拔粹。
JODE本身也是純JAVA開發的,最近越來越多的JAVA反編譯軟體也選擇JODE來做它們的核心引擎,例如JCavaj Java Decompiler、BTJ (Back To Java)、jEdit』s JavaInsight plugin等。
JODE是一個可運行的JAR文件,在windows環境下雙擊即可運行。
需要特別說明的是,JODE不是通過常規的Open->File的方式來載入JAVA編譯後的類文件(*.class)或是類包(*.jar)的, 而是通過在Options菜單中的Set Classpath來實現的,單獨的類文件可以將它的上一級目錄作為Classpath輸入,然後再選擇Reload Classpath即可。
新加入的類包或是類的名字會在左側窗口出現,雙擊類包名可以展開目錄樹結構,雙擊需要反編譯的類名則在右上角的窗口中直接顯示反編譯後的源代碼。
三、 獨樹一幟的DAVA
DAVA不是一個獨立的JAVA反編譯器,而是JAVA代碼優化工具Soot的一部分。Soot和JODE一樣是純JAVA開發的,也是一個獨立的JAR包,但卻不能通過雙擊直接運行,而是象JAD一樣在命令行狀態運行。
Soot對環境變數的配置要求非常嚴格,通常情況下要對CLASSPATH做如下設置:
Set CLASSPATH=%CLASSPATH%;c:\sootdir\sootclasses-2.1.0.jar;.;
其中的c:\sootdir\是下載的soot類包放置的路徑,CLASSPATH末尾的.;代表了當前目錄,如果不加上這個的話Soot經常會報一個找不到類的錯誤。
DAVA是作為Soot的一個參數使用的,通常的用法如下:
Java soot.Main –f dava –d c:\javasource javatest
注意最後的類名不用帶.class後綴,因為它默認是處理class文件,這個操作與前述的JAD的參數效果相同。
DAVA採取了流程優化的方式進行反編譯,與傳統反編譯思路不盡相同,但卻對改變流程類的加密方法有獨特的反編譯效果。
上述的三種工具各有千秋,但效果都非常不錯。經測試,它們基本上都可以把JDK自帶的一些常式完全反編譯,然後不加任何修改可再編譯成功,並能正常運行!