Java源文件編碼格式不是ANSI時引起的錯誤 & 使用Java包不當引起的錯誤:找不到或無法載入主類,及其解決方法。 ...
筆者最近在自學Java,由於之前有過較好的C和C++語言的基礎,故學起Java來感覺上手挺快。最近編寫一些小的Java代碼時,遇到了兩個小問題。經過查找資料和親自測試,已得到解決。在這裡將這兩個小問題及其解決辦法分享給各位初學者,以期共同學習進步。
[1] 文件編碼格式不當引起的錯誤
使用JDK工具對Java源程式進行編譯時,預設的文件編碼格式為ANSI,若編寫的Java源程式文件不符合該編碼格式,則可能出現編譯時報錯。
筆者習慣使用Notepad++編輯器寫代碼(我想這個代碼編輯器應該受很多程式員的喜愛,若讀者沒有使用過,這裡強烈推薦使用),但是Notepad++預設的文件編碼格式為UTF-8,不符合JDK的預設編碼規則。那麼如果Java源程式中輸出的字元含有中文,在DOS下會顯示編譯錯誤,或者輸出的中文字元顯示為亂碼。
解決方法:用Notepad++編寫Java程式前,點擊Notepad++第一行菜單欄里的 “編碼”,在下拉菜單中,將編碼格式選中為ANSI即可。此後編譯運行,可正常顯示中文字元。
[2] 使用package(包)不當引起的錯誤
Java中的“打包機制”(package)是為了防止程式多個地方出現相同的名字,而將局部程式限定在一塊的一種機制。如下麵的小代碼:
1 package pack1; 2 3 public class HelloJava { 4 static String s1="你好!"; 5 6 public static void main(String[] args) { 7 String s2="Java"; 8 System.out.println(s1); 9 System.out.println(s2); 10 } 11 }
程式中第1行定義了一個包pack1,此時若直接使用 javac HelloJava.java 編譯,再使用 java HelloJava 運行,就會出現錯誤:找不到或無法載入主類。
解決方法:編譯時加上參數:javac -d . HelloJava.java 其中-d表示生成目錄,. (句點) 表示在當前文件夾下生成目錄。編譯完後可以看到 HelloJava.java 所在文件夾下生成了新的文件夾 pack1,而編譯後的 .class 文件就在文件夾 pack1 中。運行時,命令也要加上路徑:java pack1.HelloJava 這樣才能運行成功。
註:以上內容均為筆者親自測試的結果,筆者也希望與各位讀者相互交流,共同學習進步。