java JDK安裝 編譯 執行
我們假設在下面目錄中有一個java原始碼檔案(Exercise.java),也就是一個編譯單元
E:\eclipse\adt23\adt-bundle-windows-x86_64-20140702\workspace\JavaTest\src\com\sailang\access
編譯Exercise.java原始檔
我們一般採用javac Exercise.java命令的方式,解釋一下這個命令
javac是編譯命令,要想使用這個命令,首先得找到這個命令所在的地方。我們在安裝jdk的時候,在path中配置的%JAVA_HOME%\bin目錄,就是用來找javac命令的。
Exercise.java就是要編譯的原始檔,這個檔案沒有帶任何目錄結構,說明是在當前目錄中找Exercise.java,當前目錄是C:\Users\zhongyili,可是在當前目錄中沒有Exercise.java 檔案,所以就報錯了。
我們可以通過下面的方式編譯
這樣就會在access資料夾下產生Exercise.class 檔案
那麼,現在該執行Exercise了。
這樣可以嗎?當然不可以了。
下面這樣可以:
如果,我們要想java Exercise能執行,只要在CLASSPATH新增E:\eclipse\adt23\adt-bundle-windows-x86_64-20140702\workspace\JavaTest\src\com\sailang\access目錄,java會自動進行搜尋的。
如下:
.;%JAVA_HOME%\lib;%ANT_HOME%\lib;E:\eclipse\adt23\adt-bundle-windows-x86_64-20140702\workspace\JavaTest\src\com\sailang\access
不過,有個問題,好像Classpath中.;%JAVA_HOME%\lib;%ANT_HOME%\lib;是不用配置的,java也能正常使用。不知道是不是我jdk(jdk1.7.0_17)版本的原因。
注意:
我們上面所有的描述,Exercise的實現是這樣的
public class Exercise {
public static void main(String[] args) {
System.out.println("Exercise");
}
}
假如,我們把程式碼修改如下:
編譯:import net.mindview.simple.*; public class Exercise { public static void main(String[] args) { Vector v = new Vector(); System.out.println("Exercise"); } }
在編譯Exercise.java的時候,發現需要import net.mindview.simple包,但是,編譯器不知道去哪兒匯入,所有就報錯了。
Vector的位置在D:\java\net\mindview\simple\Vector.java
解決這個問題,可以在Classpath中新增D:\java目錄,這個Vector.java也會被編譯
如果Exercise.java改為如下:
package com.sailang.access;
import net.mindview.simple.*;
public class Exercise {
public static void main(String[] args) {
Vector v = new Vector();
System.out.println("Exercise");
}
}
會怎麼樣呢?
編譯沒有問題,可是執行就報錯了。
正確的執行是下面的:
簡單說明一下:
java Exercise 肯定是不行的,因為有包名,所有應該是com.sailang.access.Exercise。這就是第一個錯誤的原因。
第二個錯誤,在access下面找com.sailang.access.Exercise 也是不對的,應該在src目錄下面找。
根據前面的經驗,我們是不是覺得,只要把E:\eclipse\adt23\adt-bundle-windows-x86_64-20140702\workspace\JavaTest\src\加到Classpath中,直接執行java com.sailang.access.Exercise就行了,Yes,是的。
Classpath D:\java;E:\eclipse\adt23\adt-bundle-windows-x86_64-20140702\workspace\JavaTest\src;
參考:
http://www.360doc.com/content/14/0830/16/8358419_405839443.shtml