背景:
一個maven的聚合專案,在父專案的pom里通過<modules>引入了幾個子專案。
在eclipse里,一個java檔案會同時出現在子專案和父專案里。
問題:
有一個java檔案,在子專案中正常,但是在父專案里的java檔案中,找不到代碼中用到的jar,比如說fastjson,顯示紅色報錯。
原因是,fastjson只定義在了子專案的pom中,沒有定義在父專案的pom中,導致父專案的maven dependency中沒有這個jar。
而我又不想把這個缺少的fastjson的申明定義在父專案的pom里,那么如何能讓父專案不報錯呢?
uj5u.com熱心網友回復:
缺少jar包,你又不想宣告引入,這不是搞笑呢嗎。正常的都是在父專案中管理jar版本,子專案進行宣告,具體百度uj5u.com熱心網友回復:
朋友你好,不懂的話不要亂說。
父專案的pom里管理的都是公用的jar,如果一個jar只有某一個子專案使用,為什么要放在父專案里,不臃腫?
隨便翻翻開源專案的代碼,這樣的例子俯拾即是,比如rocketmq,guava。
實際上這樣寫,打包編譯運行都沒有問題,只是eclipse上的顯示有問題,懷疑和elipse的設定有關
uj5u.com熱心網友回復:
一個java檔案,在子專案和父專案里都顯示,一個報錯,一個不報錯,實際上對應的是硬碟上的同一個檔案。父專案的classpath下沒有這個jar,所以報錯,現在就是不知道如何把這個jar添加到父專案的classpath下。
uj5u.com熱心網友回復:
如果你在父專案的代碼里直接用到某一個jar包里的類,你的父專案自身的pom里就需要引入這個jar包的依賴;如果你的子專案里也參考了這個jar包, 也必須引入,為了防止打包是打入多個jar包,可以通過依賴的scope來控制依賴的jar包是否會打包到最終的jar包
uj5u.com熱心網友回復:
謝謝解答,父專案中沒有java代碼,只有一個pom。
這個java代碼是子專案中的,只不過在eclipse的父子專案中同時都顯示,對應硬碟上的同一個檔案
uj5u.com熱心網友回復:
謝謝關注,問題解決了,我總結一下。這個問題實際上是eclipse的設定問題,專案的打包和運行都沒問題。
之所以父專案會報錯,是因為eclipse認為父專案里的java檔案需要編譯,而父專案的maven dependency下沒有這個jar。
因此,只要把父專案的classpath下的子專案的java檔案移除,就不再去檢查jar包是否存在,也就不報錯了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/154596.html
標籤:Web 開發
下一篇:jsp中如何使用URL向后臺傳值
