Spring Initializr 项目导致Unsupported class file major version 64
当我使用 Springinitializr 创建新项目时,Gradle 不会构建该项目。我使用 IntelliJ IDEA。
错误信息是
* Exception is:
org.gradle.cache.CacheOpenException: Could not open init generic class cache for initialization script '/tmp/ijmapper.gradle' (/home/julius/.gradle/caches/7.6.1/scripts/dnnmnny7cynyzgkf00s30jlld).
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.open(DefaultPersistentDirectoryStore.java:91)
... 166+ more
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 64
我使用此表查找它,它是java 20。问题是,我没有选择Java-20,我选择了Java-17。最重要的是,我还无法在我的 Linux 机器上安装 Java-20。
我发现了问题:我的 Gradle 设置尝试使用 Java 20。我通过单击 Gradle -> 小齿轮 -> Gradle 设置,将 Gradle JVM 设置为 17 解决了这个问题。
我知道我来这个话题有点晚了。但是,我刚刚遇到了这个问题,我发现更新gradle-wrapper.jar
可以解决这个问题。我通过在项目目录中运行 ./gradlew wrapper --gradle-version=8.1.1 --distribution-type=bin
来做到这一点。
gradlew
对我来说失败了,我认为这是因为 gradlew
无论如何都被破坏了,所以你不能在第一次运行时运行它。将gradlew
替换为gradle
(与我的自制软件一起安装)解决了这个问题。
- Kassian Sun 2023-05-14
gradle 包装器版本需要更新。我尝试的命令如下
gradle wrapper --gradle-version 8.1.1
参考:https://docs.gradle.org/current/userguide/upgrading_version_7.html
我假设您正在使用某种 IDE、Eclipse 或 IntelliJ 等。 IDE 的工作原理是,它是一个独立的生态系统,具有已预定义的 JDK/JRE。
我知道一个事实,当你安装一个新的 Eclipse 时,如果你
右键单击您的项目
Properties
Java Build Path
Libraries Tab
单击 JRE System Library
单击编辑
安装的JRE
在该窗口中,Eclipse会将最新的JDK之一设置为默认值,这与你系统上安装的JDK无关。因此,例如,如果你下载了最新的Eclipse,它将在那里设置最新的JDK,这是Eclipse的一部分,这是需要删除的值,你明确设置你想使用的JDK,也就是你例子中的17。IDE的编译器版本也是如此,你也需要检查它是否有正确的值,在你的例子中是17。
Eclipse已经安装了JRE和Java编译器,IntelliJ有SDK和Java编译器。
IntelliJ 的 JDK 位置
File > Settings > Build > Compiler > Java Compiler
File > Project Settings > SDK and Language级别应为 17
File > Project Settings > Modules > Dependencies选项卡顶部应有 17
File > Project Settings > Modules > Sources选项卡顶部应有 17 –
另请记住,您还需要确保您的 pom/gradle 文件中也有 JDK17。