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

阿豪聊乾貨發表於2016-05-12

一、背景

  最近在使用記事本編寫帶有包名並且有繼承關係的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(帶包名的類全名)命令進行執行!

相關文章