已装OpenJDK17仍遇JarLauncher类版本不兼容LinkageError求助
问题重现
执行spring --version时出现以下错误:
PS D:\Projekts\javaWebapp> spring --version Error: LinkageError occurred while loading main class org.springframework.boot.loader.launch.JarLauncher java.lang.UnsupportedClassVersionError: org/springframework/boot/loader/launch/JarLauncher has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
但本地已安装OpenJDK 17,java --version输出正常:
PS D:\Projekts\javaWebapp> java --version openjdk 17.0.8.1 2023-08-24 OpenJDK Runtime Environment Temurin-17.0.8.1+1 (build 17.0.8.1+1) OpenJDK 64-Bit Server VM Temurin-17.0.8.1+1 (build 17.0.8.1+1, mixed mode, sharing)
解决方案
检查Spring CLI实际调用的Java版本
终端显示的Java版本不一定是Spring CLI使用的版本。Windows下运行where java查看所有Java可执行文件路径,确认是否有低版本Java排在前面。如果是,调整PATH环境变量,把Java17的bin目录移到最前面。
也可以直接指定Java17路径运行Spring CLI,示例:& "C:\Program Files\Eclipse Adoptium\jdk-17.0.8.1+1\bin\java.exe" -jar C:\path\to\spring-cli.jar --version验证JAVA_HOME环境变量
检查JAVA_HOME是否指向Java17的安装目录。Windows终端运行echo $env:JAVA_HOME,输出应该是Java17的根路径(比如C:\Program Files\Eclipse Adoptium\jdk-17.0.8.1+1)。如果不是,修改环境变量后重启终端再试。重新安装Spring CLI
若Spring CLI安装包损坏或版本不兼容,卸载后重新安装适配Java17的版本。如果用SDKMAN管理,执行sdk uninstall springboot后再sdk install springboot;手动安装的话,下载对应Java17的Spring CLI包重新部署。检查项目本地配置(仅针对项目目录下运行的情况)
如果是在项目文件夹内执行命令,查看项目中的.java-version文件、pom.xml(Maven)或build.gradle(Gradle)配置,确保Java版本设置为17。比如Maven的maven-compiler-plugin需配置:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>17</source> <target>17</target> </configuration> </plugin>
内容的提问来源于stack exchange,提问作者Kingslayer47

