看板 b98902HW 關於我們 聯絡資訊
請先看懂上面那一篇:[JAVA] classpath 請先搞懂再去寫hw3 package就是拿來分門別類用的! 兩個非常重要的概念是 1.程式邏輯上的分類管理 2.實體檔案上的分類管理 這樣講沒人會懂 直接舉hw3為例子 看老師給的檔案是 POOArticle.class 還故意寫這樣喔! ntu/csie/oop10spring/POOArticle.class 看doc 會寫 ntu.csie.oop10spring.POOArticle 這是什麼? 就是它是 ntu.csie.oop10spring這個package下的POOArticle.class 然後呢? 我們先抓下來 放在 c:\workspace\hw3\class 試試看! c:\workspace\hw3\class> java POOArticle 會出現這樣的錯誤訊息: Exception in thread "main" java.lang.NoClassDefFoundError: POOArticle (wrong name: ntu/csie/oop10spring/POOArticle) 那該怎麼辦? 方法如下 有點麻煩 但是只有這樣才能成功執行 c:\workspace\hw3\class 下新增一個 名 ntu 的資料夾 在ntu這個資料夾裡面 再新增一個名 csie 的資料夾 在csie 這個資料夾再新增名 oop10spring 的資料夾 然後把POOArticle.class 放到 c:\workspace\hw3\class\ntu\csie\oop10spring 裡 接著先跳回 c:\workspace\hw3\class 執行的指令: C:\workspace\hw3\class>java ntu.csie.oop10spring.POOArticle 黃色部分: 也就是類別名稱 不再是 POOArticle 變成 ntu.csie.oop10spring.POOArticle 了! 這就是:程式邏輯上的分類管理 而建置這麼多相對應的資料夾的目的 就是要符合: 實體檔案上的分類管理 如此才能正常的運作!!! c:\workspace\hw3\class> java ntu.csie.oop10spring.POOArticle ↑ ↑ ↑ c:\workspace\hw3\class\ntu\csie\oop10spring\ ============================================================================= 最後就是hw3整個的編譯方法和執行方法了 我是這樣做的: c:\workspace\hw3\src\ntu\csie\oop10spring\ 放 POOAdvArticle.java 和 POOAdvArticleDemo.java 兩個檔案裡面最前面都要加 package ntu.csie.oop10spring c:\workspace\hw3\class\ntu\csie\oop10spring\ 放 POOArticle.class 編譯POOAdvArticle.java 和 POOAdvArticleDemo.java的指令是這樣: C:\workspace\hw3>javac -cp .\class .\src\ntu\csie\oop10spring\*.java 注意是.java檔 不是.class檔 所以 要打POOAdvArticle.java和Demo的路徑 而不是類別名稱 也就是"不要"打這樣: C:\workspace\hw3>javac -cp .\class .\src\ntu.csie.oop10spring.*.java 如此就可以編譯了,不過這樣會有一個缺點,就是 產生的.class檔 會在同一個目錄下 所以再加一個指令來改變產生檔案的儲存位置 ============================================================================= C:\workspace\hw3>javac -cp .\class -d .\bin .\src\ntu\csie\oop10spring\*.java ============================================================================= 紅藍部分告訴compiler POOArticle.class放哪裡 紫色部分告訴compiler 產生的.class檔要放哪 黃色部分告訴compiler 想要compile 的檔放哪裡 執行Demo的話: ============================================================================== C:\workspace\hw3>java -cp .\class;.\bin ntu.csie.oop10spring.POOAdvArticleDemo ============================================================================== (如果有要放參數的話記得加在後面) 藍色部分是CLASSPATH 記住因為要告訴JVM POOArticle.class 和 POOAdvArticle.class 的位置 所以要 .\class;.\bin 兩個都要放 少任何一個都會錯 大概是這樣了 大家加油吧 hw3 其實是前面這些東西難搞 本身不難寫 小小提示: 可能會用到main的參數 以及 Linked list 然後 拋棄eclipse吧 我已經對它失望了XD 試過無數種方法 不是package產生出來的時候怪怪的 就是編譯沒過 不然就是編譯過了跑了會爆掉 我已經不想再用了 多多用cmd 和 vim吧 現在只用eclipse在 edit而已 (縮排、加註解還是很好用) HW3各位加油 有一個月的時間 不要到deadline前才寫 更詳細的看這: http://caterpillar.onlyfun.net/Gossip/JavaEssence/Package.html -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.244.4.129 ※ 編輯: barry800414 來自: 60.244.4.129 (04/05 00:37)
Dorapika:唔,eclipse還是建的出來啦。 04/05 00:45
Dorapika:這是我弄出來成功的結果 http://tinyurl.com/yaepfjj 04/05 00:45
s864372002:一開始也是弄到快崩潰,照我第一篇弄應可以跟樓上一樣 04/05 11:31
tomap41017:我是直接開Vector..有差別嗎?還沒仔細研究 04/06 00:34
sunjw:推 太感動了 XD 04/07 20:11
zebraseven:啊不推就太對不起小銘了 !! 04/16 13:39
tonylo2ooo:推到懸崖去!!!! 04/26 21:42