1. 程式人生 > >web項目從Myeclipse遷移到idea的二三事

web項目從Myeclipse遷移到idea的二三事

知識 ima 說著 art 項目結構 玩耍 錯誤 unit 學習

 今天新接手了一個myeclipse項目,想把這個項目從myeclipse遷移到idea,花了點時間,也遇到一些新的問題,打算記錄下來。

 這是myeclipse的項目結構

  技術分享

  我整理一下

  技術分享

  整理的時候,我碰到了一下的一下的一些問題:

1 . maven報錯:Could not find artifact net.sf.json-lib

myeclipse中的pom

技術分享

maven 在編譯的時候,發現無法引用該jar包,網上翻閱資料發現,這個引用關系到jdk版本的實現,jdk13和jdk15。

正確的引用應該是這樣:

技術分享

當然講jdk15改成jdk13也是可以的。

2 E:\idea_project\danbao\danbao\src\main\java\com\longge\util\TwoDimensionCode.java:[18,31] 錯誤: 程序包com.sun.image.codec.jpeg不存在

技術分享

定位一下這個文件,發現竟然是屬於rt.jar文件裏面的,maven編譯竟然無法識別這個jar包,網上翻閱查詢資料後發現,竟然是com.sun這個依賴引用的鍋。

運來這個jar包是屬於“Deprecated and restricted API” 翻譯過來就是 “棄用和限制API” 這是單獨屬於sun公司的一個API,現在出現的公有包能很好地取代com.sun,在jdk1.7以上的環境中已經把這種私人包給屏蔽了,項目在myeclipse編譯時用得jdk1.6我本地在idea運行時的環境是jdk1.7,解決方案,在pom文件中增加插件,表明jre的路徑。

技術分享

這樣就是解決了這個編譯問題,jce.jar包找不到也同理。

3 maven編譯時無法識別lib文件夾下的jar包

技術分享

技術分享

我是已經在項目的配置中給這個module添加配置好的依賴的,發現這個maven並沒有識別。後來百度了一下maven發現,maven只會加載pom.xml中定義的依賴jar,手動添加的jar包不會被自動加載,也就是說lib文件夾下面的包並不會別maven自動加載,需要我們手動加載。

技術分享

添加完這個插件之後,就能解決這個問題了。

這裏多貼一下maven的目錄約定:

${proj-dir}/src/main/Java —— 存放項目的.java文件。

${proj-dir}/src/main/resources —— 存放項目資源文件,如spring, hibernate配置文件。

${proj-dir}/src/test/jave —— 存放所有測試.java文件,如JUnit測試類。

${proj-dir}/src/test/resources —— 測試資源文件。

${proj-dir}/target —— 項目輸出位置。

這個${project.basedir}是一定要寫的,不然換個環境可能還會報jar包找不到的錯誤。

其實maven是個很強大的項目管理工具,只不過他它做的很多工作都對用戶隱藏了,我們只需要遵守它的約定,就能愉快的玩耍了。

4 maven 編譯時識別自己寫的程序包

這個錯誤的根源其實在項目結構,或者說著既然是個maven項目,就要遵守maven的遊戲規則。

對於這個錯誤,有兩個解決方法。

4.1調整包的結構,也就是挪動源文件的位置,因為這個項目不是maven的“父子”依賴關系,一個module可以作為另一個的module,或者需要用的“工具類”並沒有單獨拿出來再新建一個maven項目,沒法打成jar包,供主項目文件去引用。

4.2依靠maven插件,講“工具類”,“服務類”作為資源文件,然後主文件能引用,個人推薦第二種方法,雖然我是用了第一種“笨方法”解決的問題。

技術分享

以上就是我在這次遷移項目中主要遇到的問題,記錄下來,供日後總結學習。

web項目從Myeclipse遷移到idea的二三事