同樣代碼在 Notepad+javac、Eclipse EE 下正常,但在 Eclipse SE 下報錯:StringBuffer.append(int[]) 找不到匹配方法。
Eclipse SE 默認合規級別較低 (如 1.4/1.5),導致編譯器不識別較新 API。StringBuffer.append(int[]) 可能是項目中自定義擴展或特定版本 API,低合規級別下不可見。
// 項目右鍵 → Properties → Java Compiler
// ☑ Enable project specific settings
// Compiler compliance level: 1.8 (或 11, 17 等)
// Generated .class files compatibility: 1.8
// Source compatibility: 1.8
// Properties → Java Build Path → Libraries
// 移除當前 JRE System Library
// Add Library → JRE System Library → Workspace default JRE (jdk1.8.x)
// 或 Alternate JRE → 選擇已安裝 JDK 1.8
// 原代碼 (可能依賴特定重載)
StringBuffer sb = new StringBuffer();
sb.append(intArray); // 編譯器找不到 append(int[])
// 修改為通用寫法
for (int i : intArray) {
sb.append(i).append(',');
}
if (sb.length() > 0) sb.setLength(sb.length() - 1); // 移除尾部逗號
| 特性 | Eclipse IDE for Java Developers (SE) | Eclipse IDE for Java EE Developers (EE) |
|---|---|---|
| 默認合規級別 | 較低 (歷史原因) | 較高 (針對企業開發) |
| 預裝插件 | JDT 核心 | JDT + WTP + Maven + 服務器適配器 |
| 項目模板 | Java Project | Dynamic Web Project, Maven Project 等 |
| 底層平台 | 相同 Eclipse Platform | 相同 Eclipse Platform |
org.eclipse.jdt.core.compiler.compliance 值maven.compiler.source/target)