關於Java的Classpath詳解 - 中文JAVA技術網

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

  現在問題來了

  Java怎麼知道到何處找呢, 他到底該怎麼辦

  假定版本一在 c:/mylib/com/shinechina/MyClass.java

  假定版本二在 d:/mylib/com/shinechina/MyClass.java

  注意:不要忘了編譯成class文件吆, java文件是不能執行的

   cd c:/mylib/com/shinechina
   javac *.java
   cd d:/mylib/com/shinechina
   javac *.java


  有了:

  他先到機器的CLASSPATH去找,假設是windows系統 c:/mylib;d:/mylib;d:/jdk1.2.2/lib/rt.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:/mylib/com/shinechina/MyClass.java

  編譯後c:/mylib/com/shinechina/MyClass.class

  怎麼指定classpath呢

  常見毛病

   1、c:/mylib/com/shinechina/

   2、c:/mylib/com/

  正確

   1、c:/mylib/

   2、c:/mylib


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

  現在問題來了

  Java怎麼知道到何處找呢, 他到底該怎麼辦

  假定版本一在 c:/mylib/com/shinechina/MyClass.java

  假定版本二在 d:/mylib/com/shinechina/MyClass.java

  注意:不要忘了編譯成class文件吆, java文件是不能執行的

   cd c:/mylib/com/shinechina
   javac *.java
   cd d:/mylib/com/shinechina
   javac *.java


  有了:

  他先到機器的CLASSPATH去找,假設是windows系統 c:/mylib;d:/mylib;d:/jdk1.2.2/lib/rt.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:/mylib/com/shinechina/MyClass.java

  編譯後c:/mylib/com/shinechina/MyClass.class

  怎麼指定classpath呢

  常見毛病

   1、c:/mylib/com/shinechina/

   2、c:/mylib/com/

  正確

   1、c:/mylib/

   2、c:/mylib

本文轉自
http://www.cn-java.com/www1/?action-viewnews-itemid-2409
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章