java 命令行 編譯 運行程序
阿新 • • 發佈:2017-06-10
launch error 文件 fine div method cep top find
寫好後保存為test_1.java,windows環境下WIN+R打開命令行。cd到test_1.java文件文件夾下。
編譯文件。假設之前java環境都配置好了的話,這時候在命令行中輸入dir我們能夠看到文件夾下多了一個test_1.class文件:
嘗試執行字節碼文件,卻出現了異常。 這是由於我們在代碼開頭的地方建立了一個
總結:
學習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.class 2014/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: c n/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:14 2) 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_1 0 1 2 3 4 5 6 7 8 9 C:\Users\acer\Desktop\technology\test_java>java com/csdn/lkasdolka/test_1 0 1 2 3 4 5 6 7 8 9
總結:
1.javac用來編譯.java文件生成.class文件(字節碼文件),java用來運行.class文件,運行的時候去掉.class後綴。
2.假設在源文件裏定義了包(package),須要將.class文件放到包定義的相應文件夾下,否則運行java 命令的時候會出 NoClassDefFoundError的異常
The End~
(如有錯誤,歡迎指正)
java 命令行 編譯 運行程序