一、背景
最近在使用記事本編寫帶有包名並且有繼承關係的java程式碼並執行時發現出現了很多錯誤,經過努力一一被解決,今天我們來看一下會遇見哪些問題,並給出解決辦法。
二、測試過程
1.父類程式碼
1 package com.hafiz.zhang; 2 3 public class Fu 4 { 5 private Integer i ; 6 7 public void sayHello(String name) { 8 System.out.println("Hello " + name); 9 } 10 }
2.子類程式碼
1 package com.hafiz.zhang; 2 3 public class Zi extends Fu 4 { 5 private static String name = "Hafiz.Zhang"; 6 public static void main(String[] args) { 7 new Zi().sayHello(name); 8 } 9 }
1)第一次直接在基類和子類所在的目錄執行javac Zi.java命令,出現以下錯誤:
解決辦法為:我們需要使用javac *.java命令來進行執行,因為此時存在繼承關係,編譯子類的同時也需要先編譯父類
2)執行java Zi命令,出現以下錯誤
這是什麼原因呢?因為我們在編寫程式時用到了包名,所以執行類檔案時,需要完整名稱,命令修改為:java com.hafiz.zhang.Zi
我們會發現出現以下錯誤
這是因為我們不存在子資料夾com/hafiz/zhang並且在該子資料夾下不存在Zi.class檔案,故找不到主類。
解決辦法是:使用javac -d . *.java("-d ."代表在當前目錄下建立包路徑)命令來進行編譯,這樣javac命令會自動幫我們建立包名所指定的資料夾,並在該資料夾下建立Zi.class檔案。
此時我們還發現,已經自動生成子資料夾com/hafiz/zhang並且在該子資料夾下存在Zi.class檔案了。
這時我們再執行:java com.hafiz.zhang.Zi命令,程式執行成功!
由此我們得出了在CMD視窗中使用javac和java命令進行編譯和執行帶有包名的具有繼承關係的類的方式:
1.使用javac -d . *.java進行編譯
2.使用java com.hafiz.Zi(帶包名的類全名)命令進行執行!