java 命令列 編譯 運行程式

來源:互聯網
上載者:User

標籤:help   命名   lan   launch   csdn   簡單的   配置   產生   工作   

學習java使用IDE前最好先用用命令列的javac、java來跑一跑簡單的程式,這樣能夠熟悉一下包管理對.class檔案路徑的影響。

我們先寫一段簡單的代碼:

package com.csdn.lkasdolka;public class test_1{    public static void main(String[] args){for(int i = 0; i < 10; ++i ){    System.out.println(i);}    }}

寫好後儲存為test_1.java,windows環境下WIN+R開啟命令列。cd到test_1.java檔案檔案夾下。

用命令

javac test_1.java 

編譯檔案。假設之前java環境都配置好了的話,這時候在命令列中輸入dir我們能夠看到檔案夾下多了一個test_1.class檔案:

2014/10/06  16:23    <DIR>          .2014/10/06  16:23    <DIR>          ..2014/10/06  16:23               454 test_1.class2014/10/06  16:09               173 test_1.java               2 個檔案            627 位元組               2 個檔案夾 13,711,450,112 可用位元組


接下來用

java test_1

嘗試執行位元組碼檔案,卻出現了異常。

Exception in thread "main" java.lang.NoClassDefFoundError: test_1 (wrong name: cn/bupt/d10_1006_1/test_1)        at java.lang.ClassLoader.defineClass1(Native Method)        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)        at java.security.AccessController.doPrivileged(Native Method)        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
這是由於我們在代碼開頭的地方建立了一個
com.csdn.lkasdolka
的包。

包是java其中用於管理命名空間的一種機制。

我們須要在當前檔案夾中手動建立com\csdn\lkasdolka,然後把test_1.class剪下到com\csdn\lkasdolka\檔案夾下。

這時候再cd回最初的工作資料夾(com的父資料夾),在命令列輸入

java com.csdn.lkasdolka.test_1
或者

java com/csdn/lkasdolka/test_1
應該就能看到正確的輸出結果了:

C:\Users\acer\Desktop\technology\test_java>java com.csdn.lkasdolka.test_10123456789C:\Users\acer\Desktop\technology\test_java>java com/csdn/lkasdolka/test_10123456789

總結:

1.javac用來編譯.java檔案產生.class檔案(位元組碼檔案),java用來運行.class檔案,啟動並執行時候去掉.class尾碼。

2.假設在源檔案裡定義了包(package),須要將.class檔案放到包定義的相應檔案夾下,否則運行java 命令的時候會出 NoClassDefFoundError的異常


The End~

(如有錯誤,歡迎指正)

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.