org.springframework.beans.TypeMismatchException: Failed to convert property value ... to required type 'java.lang.Class' for property 'mapperInterface'
Caused by: java.lang.UnsupportedClassVersionError: com/luckeys/dao/ActivityDao : Unsupported major.minor version 51.0
| Major Version | Java 版本 |
|---|---|
| 51.0 | Java 7 |
| 52.0 | Java 8 |
| 55.0 | Java 11 |
| 61.0 | Java 17 |
ActivityDao.class 以 Java 7 編譯(version 51.0),但運行環境為 Java 6 或更低,導致類載入器拒絕載入。Spring 嘗試將字串屬性 mapperInterface 轉換為 Class 型別時觸發 ClassUtils.resolveClassName,進而載入該類別,拋出 UnsupportedClassVersionError,包裝為 TypeMismatchException。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
mvn dependency:purge-local-repository 移除舊版編譯產物。Eclipse 專案建置路徑使用工作區 JDK(通常較新),而打包 WAR 部署到外部 Tomcat 可能使用系統預設舊 JDK,導致版本不一致。
UnsupportedClassVersionError 51.0 = 類別檔案為 Java 7 編譯,運行環境需 JDK 7+。統一版本即可解決。