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")); // 報錯行
| 可能原因 | 說明 | 驗證/修復 |
|---|---|---|
| JRE/JDK 版本不匹配 | 項目編譯器合規級別 (1.8) 與構建路徑綁定的 JRE (1.7 或 9+ 模塊化) 不一致,導致核心類 `java.lang.CharSequence` 無法正確解析 | 右鍵項目 → Properties → Java Build Path → Libraries → 確保只有一個 JRE System Library,且版本與 Compiler Compliance 一致 |
| 項目缺少 JRE System Library | Build 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 |
Eclipse 中 java.lang.CharSequence cannot be resolved 解決方案
`String.contains()` 代碼**完全正確**。報錯 `CharSequence cannot be resolved` 純屬 **Eclipse 構建路徑/JDK 配置/緩存問題**。按「Build Path 檢查 → Compiler 合規級別對齊 → Clean 重建 → 必要時重新導入項目」步驟操作,99% 可解決。切勿誤以為是 API 用法錯誤而去修改正確代碼。