天天看點

在CMD視窗中使用javac和java指令進行編譯和執行帶有包名的具有繼承關系的類

一、背景

  最近在使用記事本編寫帶有包名并且有繼承關系的java代碼并運作時發現出現了很多錯誤,經過努力一一被解決,今天我們來看一下會遇見哪些問題,并給出解決辦法。

二、測試過程

 1.父類代碼

  2.子類代碼

1)第一次直接在基類和子類所在的目錄運作javac Zi.java指令,出現以下錯誤:

在CMD視窗中使用javac和java指令進行編譯和執行帶有包名的具有繼承關系的類

解決辦法為:我們需要使用javac *.java指令來進行運作,因為此時存在繼承關系,編譯子類的同時也需要先編譯父類

2)運作java Zi指令,出現以下錯誤

在CMD視窗中使用javac和java指令進行編譯和執行帶有包名的具有繼承關系的類

這是什麼原因呢?因為我們在編寫程式時用到了包名,是以運作類檔案時,需要完整名稱,指令修改為:java com.hafiz.zhang.Zi

我們會發現出現以下錯誤

在CMD視窗中使用javac和java指令進行編譯和執行帶有包名的具有繼承關系的類

這是因為我們不存在子檔案夾com/hafiz/zhang并且在該子檔案夾下不存在Zi.class檔案,故找不到主類。

解決辦法是:使用javac  -d . *.java("-d ."代表在目前目錄下建立包路徑)指令來進行編譯,這樣javac指令會自動幫我們建立包名所指定的檔案夾,并在該檔案夾下建立Zi.class檔案。

在CMD視窗中使用javac和java指令進行編譯和執行帶有包名的具有繼承關系的類

此時我們還發現,已經自動生成子檔案夾com/hafiz/zhang并且在該子檔案夾下存在Zi.class檔案了。

在CMD視窗中使用javac和java指令進行編譯和執行帶有包名的具有繼承關系的類

這時我們再運作:java com.hafiz.zhang.Zi指令,程式執行成功!

在CMD視窗中使用javac和java指令進行編譯和執行帶有包名的具有繼承關系的類

由此我們得出了在CMD視窗中使用javac和java指令進行編譯和執行帶有包名的具有繼承關系的類的方式:

1.使用javac -d . *.java進行編譯

2.使用java com.hafiz.Zi(帶包名的類全名)指令進行運作!