使用CMD命令編譯和運行Java程式

來源:互聯網
上載者:User

標籤:direct   idt   複雜   運行程式   int   變數   命令編譯   必須   應用程式   

對於初學者來說,使用CMD命令(Unix以及類Unix系統採用Termial)來編譯和運行Java的好處是讓初學者直觀地體會到編譯(Compile)這一步驟,加深記憶。所謂編譯就是將文字檔xxx.java翻譯為Java虛擬機器可以識別的位元組碼檔案xxx.class,這部分原理暫且不做深究,直接介紹如何使用CMD命令執行Java程式。Unix/Linux或者Mac iOS等其它類Unix系統,方法都一樣,涉及到的一些操作CLASSPATH的命令與Windows系統不同,就此不再贅述。

寫一個Hello World程式
1 public class HelloWorld {2     public static void main(String[] args){3         System.out.println("Hello, World!");4     }5 }

因為規定java文字檔名稱,必須與檔案中public的類名相同,所以,我儲存上述代碼檔案名稱為HelloWorld.java,儲存在如下目錄:

1.編譯

E:\myJava\javaSrc>javac HelloWorld.java -d . 

命令解析:

完整命令: javac [ options ] [ sourcefiles ] [ classes] [ @argfiles ]

  • javac: java語言的編譯器,使用命令列編譯Java源檔案,輸出位元組碼檔案.class.
  • sourcefiles: java源檔案的相對路徑。
  • options: 這裡使用的是-d, 即directory簡寫,表示輸出位元組碼的位置,"."表示目前的目錄,".."表示上級目錄,"..\bin"表示在目前的目錄的兄弟目錄bin,以此類推。

所以HelloWorld.java編譯完成後在目前的目錄輸出了位元組嗎檔案HelloWorld.class.

 

2.運行

E:\myJava\javaSrc>java HelloWorld
Hello, World!

java運行程式的命令是:

java [options] classname [args]

  • java: 執行程式命令。執行順序是啟動JRE->載入class->調用class的main()方法,main方法必須是public static void main(String[] args)的樣子。
  • classname: 要執行的class檔案的名稱,要加包名,中間以‘.‘隔開,比如java.lang.String
  • options: 一些選擇性參數[可參考Java文檔]

成功列印出字串: Hello, World!

 

將class輸出到指定package

  package簡言之就是存放Java位元組碼檔案的包,jar檔案就是存放package的包,這樣區分檔案結構,使項目的層次更分明,便於維護,注意要在類聲明上方聲明package:

1 package hello;     //聲明package2 3 public class HelloWorld {4     public static void main(String[] args){5         System.out.println("Hello, World!");6     }7 }
1.編譯

E:\myJava\javaSrc>javac HelloWorld.java -d ..

注意存放路徑是".."即上級目錄,它表示"hello"這個package的產生路徑,class檔案會產生在hello包中,如果hello不存在,程式將自動建立之,在案頭上的結果,實際就是一個普通目錄而已:

2.運行

java運行程式的命令是:

E:\myJava\javaSrc>java ../hello.HelloWorld
錯誤:找不到或無法載入主類

 結果卻是提示找不到class,如果我們現在將CMD開啟到hello包所在同級目錄下,即"myJava"目錄,運行:

E:\myJava>java hello.HelloWorld
Hello,World!

 程式成功輸出了,也就是java解譯器定位到了class檔案。其實,java的解譯器只能找到當前路徑下和CLASSPATH變數儲存路徑中的包,所以我必須先把CMD的路徑切換到hello的同級目錄下,然後再運行java hello.HelloWorld。

    那麼如果每次都這樣執行,豈不是很麻煩?

 

CLASSPATH

       "The class path is the path that the Java Runtime Environment (JRE) searches for classes and other resource files."----官方文檔, 即CLASSPATH就是JRE尋找class檔案和其它資源檔的地方,因此,為了方便運行,就有必要把我們產生的包想辦法放到CLASSPATH變數中,WIn7環境下的操作方法         是:

  右擊“電腦”->屬性->進階系統設定->環境變數->系統變數, 雙擊“CLASSPATH”, 在“變數值”最後輸入";路徑",其中";"是多個CLASSPATH的分隔字元號,:

      

 

 好了,設定完成後,重新開啟CMD,在任何位置輸入命令:

C:\Windows>java hello.HelloWorld
Hello,World!

   都可以成功運行啦!

   當然,java命令中亦可以顯式地使用-classpath參數告訴JRE去哪裡找,不過這種方式的範圍是一次命令,也可以用命令列

  set classpath = %classpath%;dir        //dir是你需要設定的絕對路徑

  在本CMD視窗開啟的期間生效一個臨時的CLASSPATH,其它的CMD視窗不生效(Linux 使用#export PATH=$PATH:dir )。你可以使用

  set classpath

 來查看當前生效的CLASSPATH中有沒有你設定的路徑(Linux使用echo $classpath查看)。

 

總結
  • 啟動一個Java應用程式,需要經過編譯和運行兩個過程;
  • 編譯就是將程式員編寫的Java源檔案翻譯為Java虛擬機器可執行檔位元組碼檔案;
  • 運行位元組碼檔案的前提是虛擬機器通過JRE的環境變數CLASSPATH找到這些檔案;
  • 可以設定CLASSPATH變數來將你的目錄加入到環境變數中以使JRE能找到位元組碼檔案;
  • 找到檔案後虛擬機器將會載入位元組碼檔案以運行。

  不積跬步,無以至千裡,不積小流,無以成江海。運行一個Java程式看似就是一小步,實際上其中包含有複雜的過程和邏輯,這些技術細節,需要在積累一定的實踐經驗和知識的基礎上,再繼續深究。

使用CMD命令編譯和運行Java程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.