看板 b98902HW 關於我們 聯絡資訊
感謝鋼琴今天一直回答我問題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 HelloWorldC:\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)
peteranny:推小銘!! 04/05 12:28
s864372002:推推,教學文接力XD。 04/05 13:38
tomap41017:推推!! 04/06 00:32
sunjw:推!! 04/07 20:11
paul112004:推! 04/08 22:10
zebraseven:好球哦 ~ 推!! 04/16 13:27