『壹』 java在cmd中編譯執行出現錯誤 javac咋么就錯了
java環境變數設置 - 詳細版
把jdk安裝到計算機後(這里以jdk1.7來安裝,其他版本一樣),再進行設置,java環境才能夠生效。
首先,右鍵點我的電腦。打開屬性。然後選擇「高級」裡面的「環境變數」,在新打開的界面中的需要設置三個系統變數屬性「JAVA_HOME」、「Path」、「CLASSPATH」。在沒安裝過jdk前,path屬性是原本就存在的,而
JAVA_HOME和CLASSPATH這倆個系統變數是不存在的,需要新建。
點「新建」,然後在「變數名(N)」寫上JAVA_HOME,JAVA_HOME變數表示java的安裝路徑。然後在改變數值(N)寫入剛才安裝的路徑「C:\jdk1.7」。
(註: 如果安裝的路徑不是磁碟C或者不是在jdk1.7這個文件夾,可對應修改。以下文字都是假定安裝在C:\jdk1.7裡面。)
其二,在系統變數裡面找到Path,然後點「編輯」,Path變數表示系統在任何路徑下都可以識別java命令。然後在改變數值(N)寫入「.;%JAVA_HOME%\bin」,(其中「%JAVA_HOME%」的意思為剛才設置JAVA_HOME的值),也可以
直接寫上「C:\jdk1.7\bin」,推薦使用前者,復用性高。
其三,再點「新建」,然後在變數名上寫CLASSPATH,CLASSPATH變數表示java載入類(class or lib)路徑,只有類在CLASSPATH中,java命令才能識別。然後在改變數值(N)寫入「.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\toos.jar」 (要加.表示當前路徑)
最後,java環境變數設置完畢,按「確定」直至屬性窗口消失,即保存成功
驗證java環境變數設置是否成功。先打開「開始」->「運行」,打入「cmd」,進入dos系統界面。然後輸入「java -version」,如果安裝成功。系統會顯示java version jdk"1.7.0"。這樣java環境變數設置OK了!
總結,java環境變數設置目的:
1,JAVA_HOME
(1)為了方便引用,例如你jdk安裝在C:\Program Files\Java\jdk1.7.0目錄里,則設置JAVA_HOME為該目錄路徑, 那麼以後你要使用這個路徑的時候, 只需輸入%JAVA_HOME%即可, 避免每次引用都輸入很長的路徑串;
(2)歸一原則, 當你jdk路徑需要改變的時候, 你僅需更改JAVA_HOME的變數值即可, 否則你就要更改任何用絕對路徑引用jdk目錄的文檔, 要是萬一你沒改全,某個程序找不到jdk, 後果就可能是程序崩潰;
(3)第三方軟體會引用約定好的JAVA_HOME變數, 才能夠正常使用該軟體, 以後用JAVA久了就會知道, 要是某個軟體不能正常使用, 很可能就是JAVA_HOME設置不對造成的;
2,CLASSPATH
設置CLASSPATH的目的是為了程序能找到相應的".class"文件, 舉個例子: 編譯一個JAVA程序---A.java, 會得到一個A.class的類文件,在當前目錄下執行java A, 將會得到相應的結果(前提是已經設置
CLASSPATH為"."). 現在, 把A.class移到別的目錄下(例如:"e:\"), 執行java A, 將會拋出java.lang.NoClassDefFoundError異常,原因就是找不到.class文件, 現在你把CLASSPATH增加為:".;e:\"再運行java A, 結果一切正常, java命令通過CLASSPATH找到了.class文件!
3,PATH
你想在任何時候都使用%JAVA_HOME%\bin\java 等來執行java命令嗎, 當然不會, 於是, 你可以選擇把 %JAVA_HOME%\bin添加到PATH路徑下, 這樣, 我們在任何路徑下就可以僅用java來執行命令了.(當你在命令提示符窗口輸入你個代碼時,操作系統會在當前目錄和PATH變數目錄里查找相應的應用程序, 並且執行.
三,java環境變數設置 - 錯誤案例
錯誤:java.lang.NoClassDefFoundError
描述:當 Java 虛擬機或 ClassLoader 實例試圖在類的定義中載入(作為通常方法調用的一部分或者作為使用new 表達式創建的新實例的一部分),但無法找到該類的定義時,拋出此異常。
原因:java環境變數設置錯誤
『貳』 java 程序運行錯誤怎麼辦
看是發生了什麼錯誤,大多數錯誤都可以通過改寫原編碼來解決。
『叄』 java 編譯通過但是運行時錯誤
java編譯運行是2個步驟
先用javac編譯,然後用java命令運行,哪個步驟出錯自然就是什麼錯誤了
那就看是語法錯誤還是邏輯錯誤了,語法錯誤就是編譯時出錯,邏輯錯誤就是運行時出錯,邏輯錯誤比如說是演算法錯誤,比如判斷偶數寫成了%2==1這樣的
『肆』 一個java程序編譯錯誤提示,看不太懂,求解!
StaticA的對象A創建在內存中,而A僅是一個字元A而已,它指向內存中真正創建的對象。比方說:一個卡片上寫著「JAVA編程思想」,這個卡片上慎唯有根線,連在一本名字叫做《JAVA編程思想》的書上。那麼卡片上寫的僅僅是個字元而已,不是真正的書。但是可以通過卡片找到書。這里卡片就像你代碼里的A,但是A並不是真正的對象,它是一個符號,指向內存中真正的對象。你代碼里的符號A和B,沒定義就用,編譯器不知道這兩個符號從哪裡來的,表示什麼。
那麼現在如果說,讓你將class StaticDemo類中的StaticA A=new StaticA();該為StaticA a=new StaticA();而class StaticA類不去改動,你想想class StaticA中的列印語句中,A表示什麼呢?B又表示什麼呢?
對於System.out.println("a="+A.a+",b="+B.b);編譯器解釋到A.a和廳或B.b的時候,它就要先找到A,確定了A以後,再解釋出A.a,可是在class StaticA中他都不知道A是個什麼東西,在class StaticA中A沒有定義,內存中也就沒有對象。所以編譯器說找不到符號扮孝伍。