最近在新建的 eclipse專案匯入其他專案的jar檔時,常常會發生path錯誤無法編譯的問題。
1. 將所有的 *.jar 分類好,新增設定 User Libraries
→ Windows → Preference → Java → Build Path → User Libraries
※ 不要勾選 System library ( added to the boot class path )
2. 在 Project 的 Build Path 的 Libraries 引入 User Libraries
3. 進入 Order and Export 勾選引入的 User Libraries
→ Project → Build Path → Cinfigure Build Path → Libraries & Order and Export
1. 設定 User Libraries 到 Build Path :
用於當 Java 在 Compile 時,可以正確「參考到」這些外部的 *.jar !
※ 有沒有勾選 System library ( added to the boot class path ) 對於用 RSA 開發的人是有些微影響的!
● 優點:
◎ 分類方便醒目
◎ 可多個專案共用,單純的 Java 程式適用
● 缺點:
◎ 需固定 *.jar 的位置
◎ 如果沒有勾選 Order and Export 在 Export Project 時不會一起匯出
◎ 版本控管不易
=================================================
2. 直接將所有的 *.jar 放到 Dymanic Web Project 底下的 WEB-INF / lib 資料夾中:
這是最快的方法,不管是直接 Compile 或是 Web Project 在 Runtime 時都可以正式引用!在 Export Project 的同時也會一同置入 *war 或是 *.ear 中!
● 優點:
◎ Export Project 時會將這些 *.jar 一起匯出
◎ 方便版本控管
● 缺點:
◎ 所有的 *.jar 都在同一個資料夾中,不易整理
◎ Export 出來的 Project 會隨著 *.jar 數量而變大
=================================================
3. 設定好 User Libraries 到 Build Path 並在 Java EE Module Dependencies 勾選匯入的 *.jar :
與第 1 點相同,不同的地方是啟動 Server 的同時會將這些 *.jar 置入 Project 的 WEB-INF / lib 裡, ClassPath 路徑也同時改變!
● 優點:
◎ 分類方便醒目
◎ 可多個專案共用
● 缺點:
◎ 一定要啟動 Server 才能正確執行
=================================================
4. 在 Java EE Module Dependencies 的 Web Libraries 加入其它 Project :
這是用在當我將一個 Project 依照某些規格拆開來開發時使用的方式!
假 設將一個 Project 拆成 A 與 B 兩個 Project ,在 B Project 中加入 A Project ,當我啟動 Server 時, A Project 會自動包成 A.jar 放到 B Project 的 WEB-INF / lib 裡面來執行。
一般的 ClassPath 為:~ / oo.jar ; xx.jar ; ...
如果 oo.jar 與 xx.jar 只是一般的 Class ,就很單純,只是引入且可以正確執行!
但 是如果 oo.jar 與 xx.jar 是 Web Project ,就表示在 oo.jar 與 xx.jar 裡面也有內部自己在用的其它 *.jar ,一樣有 Project 本身的 ClassPath ,開發的時候是分開的,啟動 Server 的 Runtime 時期便一起置入 WEB-INF / lib 並改變 ClassPath !
● 優點:
◎ 當 Project 很大時將 Project 依功能或屬性切開,方便控管
◎ 如果只是要修改其中一個小 *.jar 時,不需要將 Server 整個 Shutdown
● 缺點:
◎ 新手不易上手。(這是我想得到唯一的缺點 ...)
Reference:
利用eclipse將jar lib引入(import)和輸出
匯入外部 *.jar
Eclipse 中載入 User Library 或 Java Component 元件
沒有留言:
張貼留言
留個話吧:)