1. 程式人生 > >解決maven多工程專案"找不到符號"問題

解決maven多工程專案"找不到符號"問題

最近在做一個微服務的專案,一共多十多個maven專案,今天想把其中一個服務打成jar包,但是run as mvn clean install之後,出現瞭如下圖的錯誤:
這裡寫圖片描述
通常來說有一下三個原因:
1. 可能專案編碼格式不統一。
2. 可能專案編碼使用的JDK版本不統一。
3. pom依賴問題,這種依賴可能是沒有新增包的依賴,如果是聚合專案可能是沒有新增其他模組的依賴,或者是添加了其它模組的依賴,但是沒有將依賴的模組打包到本地倉庫等。

當碰到maven錯誤:找不到符號問題時,通常第一反應應該是執行eclipse的Project -> Clean … -> Clean all projects,然後再執行maven clean,將專案清理一下,然後再試試,如果還是不能解決接著往下看。

如果是第一個問題:專案編碼格式不統一
可以在pom.xml檔案中加上這樣的配置
這裡寫圖片描述

將專案編碼設定成UTF-8,但是要注意source和target版本,下面會說

如果是第二個問題:專案編碼使用的JDK版本不統一

1、首先檢車一下pom.xml檔案設定的jdk版本,就是上面這幾行程式碼中的encoding,source指明支援的jdk版本,target指明專案打包後的jdk版本。

2、檢視專案本身的jdk版本,點選專案右鍵->build path->configure build path… ,然後設定專案的jdk版本。
這裡寫圖片描述
3、再看看編譯器的版本,通常這個版本都是預設與你專案設定的jdk版本一致,但是最好還是檢查一下點選專案右鍵properties->java compiler

實際上檢查版本主要還是前面兩步,一個是pom.xml配置,一個是專案本身設定的jdk版本,最後兩個實際上可以不用檢查,編譯版本通常都是和你專案本身設定的jdk版本預設一致,而tomcat的jdk版本設定不正確,出現的問題不會是符號錯誤。(第一次開發maven web專案時就是jdk設定得不正確,結果專案啟動之後,開啟瀏覽器登陸進去之後就是一些錯誤異常,當時使用的是jre,沒有使用jdk,這裡提醒大家做開發時最好使用jdk不要使用jre,有些專案在jre環境下是會出現問題的,而jdk中存在一些jre沒有的開發工具)。

如果是第三種情況:Pom依賴問題
那就要仔細檢查了,maven麻煩就麻煩在pom檔案的配置,和它的一些依賴關係。最簡單的情況就是你沒有為相應的jar包配置依賴,這種情況只要在pom.xml中新增相應jar包依賴就可以了,如果是聚合專案的話可能是你這個專案依賴其它的專案,那就要在你這專案pom.xml中配置其它專案的依賴。同時在編譯這個專案前,要將你依賴的其它專案打包到本地倉庫,不然這個依賴是無效的。
我的問題就是因為依賴的包沒有在本地倉庫中,或者說本地倉庫的包不是最新本版,導致最近新增的一些程式碼識別不到,然後我就把這個專案所有依賴的jar包重新mvn clean install了一下,感覺有點麻煩(到現在我還沒有搞清楚為什麼程式碼編譯之後為什麼本地倉庫的jar包沒有替換,不知道和這個專案maven私服已經失效有沒有關係,希望瞭解的大神來指導一下),不管怎樣,問題是解決了,還是很開心的。
這裡寫圖片描述

maven 錯誤找不到符號這個問題,大體上就是上面幾種情況,這篇文章只能提供一種參考,基於以上三種情況而衍生出來的其它情況也會導致錯誤找不到符號這個問題,這句需要大傢伙自己慢慢查找了。