首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java String.contains() 報錯:CharSequence 無法解析的 JDK 版本/構建路徑問題排查

     編輯:程式設計疑難解答

錯誤堆棧

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files
The method contains(CharSequence) from the type String refers to the missing type CharSequence
	at cn.itcast_03.StringDemo.main(StringDemo.java:35)

代碼片段(本身無誤)

String s1 = "helloworld";
System.out.println(s1.contains("hello")); // 報錯行

根因分析:非代碼邏輯問題,而是構建路徑/JDK 配置問題

可能原因說明驗證/修復
JRE/JDK 版本不匹配項目編譯器合規級別 (1.8) 與構建路徑綁定的 JRE (1.7 或 9+ 模塊化) 不一致,導致核心類 `java.lang.CharSequence` 無法正確解析右鍵項目 → Properties → Java Build Path → Libraries → 確保只有一個 JRE System Library,且版本與 Compiler Compliance 一致
項目缺少 JRE System LibraryBuild Path 中無 JRE 容器,或 JRE 容器標紅Add Library → JRE System Library → Workspace default JRE / Alternate JRE
模塊化系統導致導出受限JDK 9+ 使用模塊系統,若項目未配置 `module-info.java` 或 `--add-modules`,可能導致 `java.base` 模塊未正確導出 `java.lang`臨時方案:Java Build Path → Libraries → Modulepath 移除 JRE,改放 Classpath;或添加 `--add-modules java.base`
Eclipse 緩存/索引損壞.metadata/.plugins 損壞導致類解析異常Project → Clean → Clean all projects;或啟動參數加 `-clean`
多 JDK 環境衝突系統 PATH、JAVA_HOME、Eclipse 安裝目錄 ini 指向不同 JDK統一 JAVA_HOME、PATH、eclipse.ini `-vm` 指向同一 JDK

快速排查步驟

  1. 確認代碼無誤:`String.contains(CharSequence)` 是 JDK 1.5+ 標準 API,參數傳 `String` 隱式轉型為 `CharSequence` 完全合法。
  2. 檢查 **Java Build Path → Libraries**:是否有且只有一個 **JRE System Library**,版本正確(如 jdk-17),無紅叉。
  3. 檢查 **Java Compiler → Compiler compliance level**:與 JRE 版本一致(如 17)。
  4. 4. 執行 **Project → Clean**,勾選「Start a build immediately」。 5. 若仍報錯,刪除項目 `.settings`、`.classpath`、`.project` 重新導入,或新建 Workspace 導入。

參考鏈接(原帖最佳回答推薦)

Eclipse 中 java.lang.CharSequence cannot be resolved 解決方案

總結

`String.contains()` 代碼**完全正確**。報錯 `CharSequence cannot be resolved` 純屬 **Eclipse 構建路徑/JDK 配置/緩存問題**。按「Build Path 檢查 → Compiler 合規級別對齊 → Clean 重建 → 必要時重新導入項目」步驟操作,99% 可解決。切勿誤以為是 API 用法錯誤而去修改正確代碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved