標籤: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 命令列 編譯 運行程式