java Classpath全解(轉)
java Classpath全解(轉)[@more@]java 的新入門者對classpath往往比較困惑,為何在開發環境中能執行的東東出去就不好,或在外面執行的東東挺溜的進了開發環境就死菜,煩死了!
看完俺這篇文章包您萬事無憂(誇張點吧) :)呵呵
java的優點就是他是一個自動支援網路功能的東東,舉一個簡單例子來將
比方有一個Application他用到了java.lang.String(事實上要是有一個程式沒用到它,太難以想象了 :)), 和com.shinechina.MyClass(我自己寫的兩個版本) 這兩個類
版本1:
package com.shinechina;
public class MyClass
{
public static void main(String args[])
{
String str = "版本1: hello, welcome to chinaasp java 技術";
System.out.println(str);
}
}
版本2:
package com.shinechina;
public class MyClass
{
public static void main(String args[])
{
String str = "版本2:hello, welcome to chinaasp java 技術";
System.out.println(str);
}
}
現在我要執行它了
java com.shinechina.MyClass
現在問題來了
也許com.shinechina.Myclass在c:, d:, 甚至在阿龍老兄,javabeans老兄,的機器上也有這麼個東東,裡面是些很cool的
java怎麼知道到何處找呢, 他到底該怎麼辦
假定版本一在 c:mylibcomshinechinaMyClass.java
假定版本二在 d:mylibcomshinechinaMyClass.java
注意:不要忘了編譯成class檔案吆, java檔案是不能執行的
cd c:mylibcomshinechina
javac *.java
cd d:mylibcomshinechina
javac *.java
有了:
他先到機器的CLASSPATH去找
假設是windows系統 c:mylib;d:mylib;d:jdk1.2.2lib
t.jar;
或unix系統 /home/local/:/usr/local/:/usr/local/jdk1.2.2/lib/rt.jar
好, c:mylib下他找到了com目錄,有戲, 又往下找又有shinechina目錄,目錄下找到了MyClass.class, Ok 就是他了, 至於d:mylib我的版本2的MyClass他就不理會了, 至於String是在rt.jar壓縮包中待會再講他
執行的結果就是
版本1: hello, welcome to chinaasp java 技術
反過來d盤的路徑在c:之前,執行的結果就是
版本2: hello, welcome to chinaasp java 技術
依次類推, 只有在類路徑上第一個找到的才會執行,你要控制他執行那一個須如此:
java -classpath d:mylib;%classpath% com.shinechina.MyClass
執行的結果就是
版本2: hello, welcome to chinaasp java 技術
開發環境中的執行就是這樣, 總有一個地方指定類路徑的
注意,開發環境往往不去讀系統路徑, 這也就是在外面執行的東東挺溜的進了開發環境就死菜的原因嘍。
比如說jbuilder, jdevoloper從選單project->project properties...->paths標籤->Add...->新增定義好的library點ok或者new->輸入 name和classpath->ok
這個東東就被新增到了classpath中(執行時可在message view中看到)
再比如說visualAge for java , 點中你要執行的類->滑鼠右擊選中特性->類路徑標籤1。->編輯->全選,好,開發環境中的所有類都能找到了
2。->立即計算(只選中你需要的類, 如果有用class.forName之類透過程式顯式裝載的類的話,需要自己從編輯中手工家入了, 開發環境每能力幫你算出來了,如果記憶體沒有問題的話,直接編輯->全選更方便吆)
3。如果你的類並不想引入開發環境的話,點中新增額外路徑,編輯(下面的一個), 我不喜歡這樣, 就不詳細介紹了
高手的話,直接用jdk, 那麼只好麻煩你要麼加到系統classpath中(unix下為$CLASSPATH), 要麼編譯執行時顯式指明classpath
下面介紹一個初學者最容易犯的錯誤
還以上節介紹的例子
假定版本一在 c:mylibcomshinechinaMyClass.java
編譯後c:mylibcomshinechinaMyClass.class
怎麼指定classpath呢
常見毛病
1。c:mylibcomshinechina
2。c:mylibcom
正確
1。c:mylib
2。c:mylib
看完俺這篇文章包您萬事無憂(誇張點吧) :)呵呵
java的優點就是他是一個自動支援網路功能的東東,舉一個簡單例子來將
比方有一個Application他用到了java.lang.String(事實上要是有一個程式沒用到它,太難以想象了 :)), 和com.shinechina.MyClass(我自己寫的兩個版本) 這兩個類
版本1:
package com.shinechina;
public class MyClass
{
public static void main(String args[])
{
String str = "版本1: hello, welcome to chinaasp java 技術";
System.out.println(str);
}
}
版本2:
package com.shinechina;
public class MyClass
{
public static void main(String args[])
{
String str = "版本2:hello, welcome to chinaasp java 技術";
System.out.println(str);
}
}
現在我要執行它了
java com.shinechina.MyClass
現在問題來了
也許com.shinechina.Myclass在c:, d:, 甚至在阿龍老兄,javabeans老兄,的機器上也有這麼個東東,裡面是些很cool的
java怎麼知道到何處找呢, 他到底該怎麼辦
假定版本一在 c:mylibcomshinechinaMyClass.java
假定版本二在 d:mylibcomshinechinaMyClass.java
注意:不要忘了編譯成class檔案吆, java檔案是不能執行的
cd c:mylibcomshinechina
javac *.java
cd d:mylibcomshinechina
javac *.java
有了:
他先到機器的CLASSPATH去找
假設是windows系統 c:mylib;d:mylib;d:jdk1.2.2lib
t.jar;
或unix系統 /home/local/:/usr/local/:/usr/local/jdk1.2.2/lib/rt.jar
好, c:mylib下他找到了com目錄,有戲, 又往下找又有shinechina目錄,目錄下找到了MyClass.class, Ok 就是他了, 至於d:mylib我的版本2的MyClass他就不理會了, 至於String是在rt.jar壓縮包中待會再講他
執行的結果就是
版本1: hello, welcome to chinaasp java 技術
反過來d盤的路徑在c:之前,執行的結果就是
版本2: hello, welcome to chinaasp java 技術
依次類推, 只有在類路徑上第一個找到的才會執行,你要控制他執行那一個須如此:
java -classpath d:mylib;%classpath% com.shinechina.MyClass
執行的結果就是
版本2: hello, welcome to chinaasp java 技術
開發環境中的執行就是這樣, 總有一個地方指定類路徑的
注意,開發環境往往不去讀系統路徑, 這也就是在外面執行的東東挺溜的進了開發環境就死菜的原因嘍。
比如說jbuilder, jdevoloper從選單project->project properties...->paths標籤->Add...->新增定義好的library點ok或者new->輸入 name和classpath->ok
這個東東就被新增到了classpath中(執行時可在message view中看到)
再比如說visualAge for java , 點中你要執行的類->滑鼠右擊選中特性->類路徑標籤1。->編輯->全選,好,開發環境中的所有類都能找到了
2。->立即計算(只選中你需要的類, 如果有用class.forName之類透過程式顯式裝載的類的話,需要自己從編輯中手工家入了, 開發環境每能力幫你算出來了,如果記憶體沒有問題的話,直接編輯->全選更方便吆)
3。如果你的類並不想引入開發環境的話,點中新增額外路徑,編輯(下面的一個), 我不喜歡這樣, 就不詳細介紹了
高手的話,直接用jdk, 那麼只好麻煩你要麼加到系統classpath中(unix下為$CLASSPATH), 要麼編譯執行時顯式指明classpath
下面介紹一個初學者最容易犯的錯誤
還以上節介紹的例子
假定版本一在 c:mylibcomshinechinaMyClass.java
編譯後c:mylibcomshinechinaMyClass.class
怎麼指定classpath呢
常見毛病
1。c:mylibcomshinechina
2。c:mylibcom
正確
1。c:mylib
2。c:mylib
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-958044/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於java 的 Classpath全解 (轉)Java
- classpath 詳解(轉)
- Java PATH和CLASSPATH配置詳解Java
- Package and ClassPath (轉)Package
- 有關於JAVA中的CLASSPATH的作用 (轉)Java
- Java classpath的獲取Java
- Java Eclipse ClassPath如何理解JavaEclipse
- java的classpath萬用字元Java字元
- 深入探討、理解Java的CLASSPATHJava
- export CLASSPATH=$JAVA_HOME/libExportJava
- java反射全解Java反射
- 自動設定CLASSPATH的方法 (轉)
- java環境變數JAVA_HOME,path,CLASSPATH作用Java變數
- Ant詳解之-path、classpath和fileset
- Java - 獲取ClassPath的路徑和資源Java
- 環境變數PATH,CLASSPATH與JAVA_HOME變數Java
- spring配置中classpath和classpath*的區別Spring
- [JAVA] CLASSPATH環境變數必須要配置嗎Java變數
- java專案中的classpath和類載入器Java
- Python 指令碼中呼叫 Java 程式時 Classpath 錯誤Python指令碼Java
- Java的秘密:使用全螢幕模式 (轉)Java模式
- CLASSPATH 以及包和目錄結構的關係 (轉)
- Spring - 配置檔案中的classpath: 和 classpath*: 的區別Spring
- 網路協議全瞭解(轉)協議
- Java基礎——ArrayList方法全解(字典版)Java
- 異常解決:idea Java 動態編譯失敗,獲取classpath屬性不正確問題解決IdeaJava編譯
- jdk安裝以及JAVA_HOME和CLASSPATH以及Path的含義JDKJava
- java反射詳解(轉)Java反射
- Java IO詳解(轉)Java
- java 啟動檢視jar包載入順序並設定classpathJavaJAR
- 《java how to program》習題全解----正在創作中Java
- 全棧技巧:從Javascript跳轉到Java能有多難?全棧JavaScript
- 【轉】 java自定義註解Java
- 瞭解 JAVA classloader (轉)Java
- 硬碟資料恢復例項全解(1) (轉)硬碟資料恢復
- Linux執行環境安裝全解(轉)Linux
- Java語言與JVM中的Lambda表示式全解JavaJVM
- [轉]Java執行緒詳解Java執行緒