JAVA找不到符號(hào)的三種解決方案
前言
使用idea 啟動(dòng)項(xiàng)目 或者 Maven package 時(shí)報(bào)錯(cuò) 找不到符號(hào)。
"找不到符號(hào)"的錯(cuò)誤通常意味著編譯器找不到你試圖引用的某個(gè)類、方法或變量。
每個(gè)人的項(xiàng)目情況都不一樣,引起這個(gè)問(wèn)題的原因可能有很多種,要從問(wèn)題出發(fā) 解決 問(wèn)題。
解決方案
第一種 缺失依賴造成
首先 思路要明確, 看到錯(cuò)誤不可怕,慢慢找問(wèn)題。
1 代碼之前如果啟動(dòng)都正常 哪錯(cuò)誤應(yīng)該不大,仔細(xì)看是否是新增了pom依賴 沒有下載下來(lái),這個(gè)錯(cuò)誤大多數(shù)情況是因?yàn)?找不到某類、某方法才報(bào)的。
如果有很多的‘java: 錯(cuò)誤: 找不到符號(hào)’,說(shuō)明這幾個(gè)位置都有一個(gè)共性的問(wèn)題,都用到了同一個(gè)東西,隨便找一個(gè)錯(cuò)誤追蹤進(jìn)去,找錯(cuò)誤原因。
比如舉個(gè)例子 這個(gè)例子中報(bào)錯(cuò)了 找不到符號(hào),但是可以看到 上面是有個(gè)錯(cuò)誤的,程序包xxx.xxx是不存在的,那我們可以找一下是否真的存在,如果不存在,那就在pom里新增一下

圖為 pom.xml 文件 新增完后 記得刷新pom文件

刷新完 可重新啟動(dòng)項(xiàng)目進(jìn)行測(cè)試
第二種 代碼更新了 但是還有緩存
方案1 先刷新maven
clean 說(shuō)明 清除編譯產(chǎn)生的target文件夾內(nèi)容
complie 說(shuō)明 該命令可以對(duì)src/main/java目錄的下的代碼進(jìn)行編譯
package 說(shuō)明 打包項(xiàng)目 如果是JavaSe的項(xiàng)目,打包成jar包
如果是JavaWeb的項(xiàng)目,打包成war包
install 把項(xiàng)目打包之后安裝到本地倉(cāng)庫(kù),其實(shí)執(zhí)行install之前先執(zhí)行了打包,然后對(duì)項(xiàng)目進(jìn)行安裝到本地倉(cāng)庫(kù)

執(zhí)行完成后 重新運(yùn)行項(xiàng)目進(jìn)行測(cè)試
方案2 緩存導(dǎo)致
需要清除編譯工具緩存,idea工具點(diǎn)擊File->Invalidate caches/Restart選項(xiàng)

方案3 多個(gè)微服務(wù)項(xiàng)目 deploy
如果是多個(gè)微服務(wù)項(xiàng)目如下:找到引類相關(guān)的項(xiàng)目,在該項(xiàng)目進(jìn)行deploy一下,在進(jìn)行package
編譯器有換成顯示依賴是正確的,但是實(shí)際上已經(jīng)沒有這個(gè)class文件了需要在被引用的項(xiàng)目重新發(fā)布一下

第三種 檢查項(xiàng)目使用jdk是否正確
檢查項(xiàng)目背景 比如是否必須 使用JDK1.8 才可以運(yùn)行 其他版本均會(huì)啟動(dòng)失敗,且打包報(bào)錯(cuò)xx符號(hào)找不到。
方案1 考慮Project Structure設(shè)置中Project中jdk版本是否對(duì),確保所有子模塊改為jdk1.8就好了

方案2:考慮設(shè)置中java編碼方式中各個(gè)子模塊版本是否為1.8,確保檢查了所有的子模塊都設(shè)置對(duì)才行。

方案3:考慮考Project Structure設(shè)置中SKDS中jdk版本是否對(duì),確保右側(cè)加載的就是8版本的而不是別的JDK版本

方案4:考慮Project Structure設(shè)置中Modules中jdk版本是否對(duì)

總結(jié)
"找不到符號(hào)"的錯(cuò)誤通常意味著編譯器找不到你試圖引用的某個(gè)類、方法或變量。這可能是由于以下幾種原因:
- 拼寫錯(cuò)誤:你可能不小心拼寫了錯(cuò)誤的名稱,或者大小寫不正確。
- 導(dǎo)入缺失:如果符號(hào)(類、方法或變量)不在當(dāng)前文件的導(dǎo)入列表中,你就無(wú)法直接引用它。
- 路徑問(wèn)題:你可能沒有把庫(kù)或包放在正確的路徑下,或者在項(xiàng)目結(jié)構(gòu)中沒有設(shè)置正確的庫(kù)路徑。
- 版本沖突:你可能在使用不同版本的庫(kù),導(dǎo)致方法或類的名稱雖然相同,但實(shí)現(xiàn)不同,產(chǎn)生沖突。
要解決這個(gè)問(wèn)題,你可以嘗試以下步驟:
- 檢查拼寫:確保你正確拼寫了類、方法或變量的名稱。
- 導(dǎo)入缺失:如果符號(hào)不在當(dāng)前文件的導(dǎo)入列表中,你需要添加正確的導(dǎo)入語(yǔ)句。例如,如果你想使用
java.util.ArrayList類,你需要添加import java.util.ArrayList;。 - 檢查路徑:確保庫(kù)或包放在正確的路徑下,并且在項(xiàng)目結(jié)構(gòu)中設(shè)置了正確的庫(kù)路徑。
- 檢查版本沖突:如果你在使用不同版本的庫(kù),嘗試統(tǒng)一版本,或者確保你正在使用的方法或類的名稱與你的庫(kù)版本匹配。
- 重新構(gòu)建項(xiàng)目:有時(shí)候,清理并重新構(gòu)建項(xiàng)目可以解決一些未知的問(wèn)題。
- 使用IDE的幫助:如果你在使用IDE(如IntelliJ IDEA, Eclipse等),它們通常會(huì)有代碼自動(dòng)補(bǔ)全和錯(cuò)誤提示功能,可以幫助你找到并解決問(wèn)題。
記住,解決"找不到符號(hào)"的問(wèn)題可能需要一些耐心和試錯(cuò)。一旦你找到問(wèn)題的原因,解決它就相對(duì)簡(jiǎn)單了。
到此這篇關(guān)于JAVA找不到符號(hào)的三種解決方案的文章就介紹到這了,更多相關(guān)JAVA找不到符號(hào)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis插入數(shù)據(jù)后如何返回新增數(shù)據(jù)的id值
當(dāng)往mysql數(shù)據(jù)庫(kù)插入一條數(shù)據(jù)時(shí),有時(shí)候需要知道剛插入的信息,下面這篇文章主要給大家介紹了關(guān)于mybatis插入數(shù)據(jù)后如何返回新增數(shù)據(jù)id值的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
Sleuth+logback 設(shè)置traceid 及自定義信息方式
這篇文章主要介紹了Sleuth+logback 設(shè)置traceid 及自定義信息方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
Java 線程狀態(tài)和等待喚醒機(jī)制和線程池的實(shí)現(xiàn)
這篇文章主要介紹了Java 線程狀態(tài)和等待喚醒機(jī)制和線程池的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
深入理解JavaWeb中過(guò)濾器與監(jiān)聽器的應(yīng)用
這篇文章主要介紹了JavaWeb中過(guò)濾器與監(jiān)聽器的應(yīng)用,過(guò)濾器能夠?qū)ζヅ涞恼?qǐng)求到達(dá)目標(biāo)之前或返回響應(yīng)之后增加一些處理代碼,監(jiān)聽器是一個(gè)接口內(nèi)容由我們實(shí)現(xiàn),會(huì)在特定時(shí)間被調(diào)用,感興趣想要詳細(xì)了解可以參考下文2023-05-05
解決JAVA項(xiàng)目啟動(dòng)卡住,無(wú)任何異常信息的問(wèn)題
這篇文章主要介紹了解決JAVA項(xiàng)目啟動(dòng)卡住,無(wú)任何異常信息的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
macOS上使用gperftools定位Java內(nèi)存泄漏問(wèn)題及解決方案
這篇文章主要介紹了macOS上使用gperftools定位Java內(nèi)存泄漏問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
MapStruct內(nèi)部錯(cuò)誤:NullPointerException的解決方案
在Java開發(fā)中,MapStruct是一個(gè)非常流行的對(duì)象映射工具,它通過(guò)注解處理器在編譯時(shí)生成映射代碼,極大地簡(jiǎn)化了對(duì)象之間的轉(zhuǎn)換操作,本文將詳細(xì)分析一個(gè)常見的MapStruct內(nèi)部錯(cuò)誤——NullPointerException,并提供一系列解決方案,需要的朋友可以參考下2025-02-02

