在CMD下對Java程序的調試

問題1:在Eclipse下可以正確的編譯運行,在CMD下到了源文件夾下,可以正確的編譯,但用java命令運行時,一直報Main主線程異常,說找不到類?
解答:這和classpath的設置有關係,在執行java命令時,首先會查找系統變量裏classpath中是否找到類,找不到就會報錯,有兩種解決方案:1把你當前的目錄加入到classpath中;2使用 -classpath選項指定類存放的路徑。

問題2:javac -version 和 java -version 兩個版本不一樣的問題?
今天在CMD下編譯程序忽然發現兩個命令出來的版本號是不一樣,當然,我機器本身安裝了多個版本的jdk,javac使用的是環境變量JAVA_HOME所指定的版本,java命令使用的另一個版本,原來是在使用exe文件安裝JDK時在註冊表裏添加了JAVA_HOME註冊項,而java會優先選用註冊表裏面的,因此要和系統變量裏面的統一,需要修改Windows Registry (HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment)下的JAVA_HOME鍵值和RunTimeLib(重要)鍵值

java命令簡介:
當我們在命令行輸入:
Java(javac) XXX
的時候,java.exe(javac.exe)的工作就是找到合適的JRE來執行類文件。java.exe(javac.exe)依照如下邏輯來尋找JRE:

自己的目錄下有沒有JRE目錄(這麼說並不是非常精確,原因請詳見JDK源代碼,在此不作特別說明);
父目錄下的JRE子目錄;
查詢Windows Registry (HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment);
所以,java.exe(javac.exe)的執行結果和“您計算機裏面哪一個java.exe被執行,然後哪一套JRE被拿來執行java應用程序”有莫大的關係。

可用參數-verbose來大致查看調用的JRE的路徑
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章