作者barry800414 (小銘)
看板b98902HW
標題[JAVA] classpath 請先搞懂再去寫hw3
時間Sun Apr 4 23:01:35 2010
感謝鋼琴今天一直回答我問題XD 有了一點小心得
我覺得CLASSPATH和package的概念非常重要
(老師上課沒有特別講 但是課本有)
我原本就是搞不懂這些 所以今天搞了一整天= ="
總之大家可以先看這篇文再去看鋼琴的文章(上三篇)
首先CLASSPATH是
JVM在尋找class檔的
路徑資訊
假如你現在在 c:\workspace\hw3 裡面有HelloWorld.java這個檔長這樣:
public class HelloWorld{
public static void main(String[] args){
System.out.println("HelloWorld!");
}
}
則
c:\workspace\hw3> javac HelloWorld.java
成功compile之後
c:\workspace\hw3> java HelloWorld
應該可以成功執行
但是假設你現在的目錄不在
c:\workspace\hw3> 而是在
c:\workspace>
那該如何執行呢? 這時候就要告訴JVM class放哪! 所以要加CLASSPATH參數
方法如下:
C:\workspace>java -classpath ./hw3 HelloWorld
或
C:\workspace>java -cp ./hw3 HelloWorld
紅色的部分就是給JVM的參數指令 告訴它接下來給你CLASSPATHd
藍色的部分就是路徑
. 代表
目前所在路徑 此例就是
c:\workspace
所以
./hw3 就是
c:\workspace\hw3 (p.s. 用/ 或\ 都可以)
最後再放你要run的.class檔名 就可以跑了!!
==============================================================================
接下再來舉另一個例子:
你有一個Information.java 檔 和一個Person.class檔
Information.java長這樣:
public class Information{
public static void main(String args[]){
Person p = new Person();
System.out.println("BMI:" + p.BMI() );
}
}
Information.java放在
c:\workspace\hw3\
src
而Person.class檔放在 :
c:\workspace\hw3\
class
那我們該如何編譯呢?
C:\workspace\hw3>javac -cp ./class ./src/Information.java
紅色和藍色部分來告訴java compiler 我要用的.class檔在 c:\workspace\hw3\class裡
最後黃色的部分 就是告訴 compiler 我的.java檔 放在哪
這樣就可以編譯了 那執行呢?
要打這樣:
C:\workspace\hw3>java
-cp ./class;./src Information
而不是這樣:
C:\workspace\hw3>java -cp ./class Information
或
C:\workspace\hw3>java -cp ./src Information
差在哪? 別忘了Information.class 也是一個class 你沒告訴JVM放哪
他當然找不到囉! 所以要給他兩個路徑 中間要用
; 分隔
(注意!
; 前後
不要有空格 它會把它當成下一參數
,總之會爆)
如此一來就可以執行了
============================================================================
好 也許講到這裡 你會想 幹嘛這麼麻煩? 都放在同一個資料夾不是方便多了?
這東西有一個很重要的目的
就是將檔案分類 分到不同的資料夾 以利以後開發大程式的時候用!
把.java檔放在src資料夾裡 把.class檔放在class資料夾裡.....
把不同功能的分放在不同的資料夾等等
後面還會講到package的概念 也會用到!
總之 要會就是了!!
package我打下一篇好了
更詳細的內容可以看這裡:
http://caterpillar.onlyfun.net/Gossip/JavaEssence/WhatClasspath.html
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.244.4.129
※ 編輯: barry800414 來自: 60.244.4.129 (04/04 23:10)
※ 編輯: barry800414 來自: 60.244.4.129 (04/04 23:12)
※ 編輯: barry800414 來自: 60.244.4.129 (04/04 23:13)
1F:推 peteranny:推小銘!! 04/05 12:28
2F:推 s864372002:推推,教學文接力XD。 04/05 13:38
3F:推 tomap41017:推推!! 04/06 00:32
4F:推 sunjw:推!! 04/07 20:11
5F:推 paul112004:推! 04/08 22:10
6F:推 zebraseven:好球哦 ~ 推!! 04/16 13:27