一、問題由來
接上一篇文章使用maven進行打包時報中文亂碼錯誤,經過多次嘗試後最終解決問題,顯示出真正的錯誤資訊如下:
程式包 applets.user.service.UserService 不存在
找不到符號20
因為工作原因,包名有改動,可是錯誤資訊是一模一樣的。看到這個真實的錯誤資訊後,才搞清楚錯誤提示資訊。自己
的程式碼中存在的問題是有一個公共模組中所有的類,其他模組都不能正常引入。寫程式碼的時候可以匯入,可是在將模組
進行打包的時候,就報了上面的錯,讓人費解。
二、問題分析
可以確定的一點是,公共模組可以打成jar包,自己也去自己的本地倉庫中檢視了打包後的資訊,發現都沒有問題,
打好的jar包在倉庫中放著,其他說明檔案也都有。就類似於下面這種,只有正確的打成jar包後,其他專案才能夠引用。
公共模組打成的包沒問題,可是其他模組卻不能引入公共模組,這就很奇怪?自己立馬開始搜尋問題的答案,然後嘗試各種解決辦法,
因為只有解決這個這個問題,專案才能夠正常啟動,如果這一步都沒有解決,那麼其他的什麼都別談了。
三、解決方案
嘗試方式一:
執行命令進行清理
mvn -U idea:idea
問題未解決.
https://blog.csdn.net/qq_39246334/article/details/109393354
嘗試方式二:
清除idea快取,然後重啟IDEA 問題未解決;
開啟自動載入jar包,問題未解決;
import快速匯入,問題任然未解決。
https://www.cnblogs.com/lodalo/p/13678274.html
嘗試方式三:
配置Maven的一些資訊 問題未解決
https://blog.csdn.net/lzzdhhhh/article/details/105907772
嘗試方式四:
單獨使用命令清理IDEA外掛 問題未解決
https://www.jianshu.com/p/47a058d15ec1
嘗試方式五:
說是設定下載依賴包的原始碼 這聽起來有些扯淡 CSDN乾的事 還是未解決
https://blog.csdn.net/m0_49573573/article/details/121680390
自己在此期間也看了很多的其他博文,然後開始分析自己遇到的問題。
自己的專案 A 下面有三個子模組 B/C/D,C是抽取的公共模組,供其他模組呼叫。打包時,C模組可以正常打包,
可是其他模組依賴C模組的B/D打包時,報錯。自己在打包時仔細看輸出日誌,打第一個模組C的jar包時,如果不新增任何配置,則報錯
unable to find main class意思是找不到啟動類。解決這個問題後,接著就出現上面的問題,可以打包了,可是其他專案不能引用C模組,
報錯程式包xxx不存在找不到符號。後來瞭解到編譯、打包外掛有兩類,一類是maven自帶你的,一類是spring-boot整合的。
自己去看了以往開發的專案,在公共模組中,根本就沒有引入 spring-boot-maven-plugin 這個依賴。公共模組打成jar包僅僅是提供給其他模組呼叫,
其本身並不會啟動專案。瞭解到這點後,自己嘗試著搜尋,模組中如何排除 spring-boot-maven-plugin 依賴,找到一篇博文,在C模組中新增配置如下,
<build>
<!-- war、jar的名稱 -->
<finalName>${artifactId}-${version}</finalName>
<plugins>
<!-- 編譯外掛 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
然後重新匯入maven配置,重新打包,問題解決。
問題解決,之後搜尋的時候發現還有一篇博文和我遇到類似的問題,參考 https://www.cnblogs.com/xiadongqing/p/12979764.html
之後的幾個模組都採用這種方式進行處理,完全可行。