如何在Spring Boot项目中成功更改Java版本?

问题描述 投票:0回答:5

我最近开始了一个新的 Spring Boot Gradle 项目,使用 IntelliJ。在做项目的时候,我选择了Java 17作为项目的Java版本。我的

build.gradle
文件有
sourceCompatibility = '17'
,但是我的
JAVA_HOME
环境变量设置为 Java 11,我真的不想使用 Java 17。

我尝试将

sourceCompatibility
更改为
11
,然后进入

文件 -> 项目结构 -> 项目设置 -> 项目

也将 SDK 更改为 11.

每当我在 IntelliJ 中单击“运行”按钮时,以及当我尝试使用

./gradlew clean build
在命令行中构建我的项目时,我都会收到一堆错误,主要是抱怨兼容性问题。他们读的几乎一样;这是失败构建错误的开始:

   > Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.0.1-SNAPSHOT.
     Required by:
         project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.0.1-SNAPSHOT:20221222.181044-39
      > No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.0.1-SNAPSHOT:20221222.181044-39 was found. The consumer was configured to find a runtime of a library compatible with Java 11, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '7.6' but:
          - Variant 'apiElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.1-SNAPSHOT declares a library, packaged as a jar, and its dependencies declared externally:
              - Incompatible because this component declares an API of a component compatible with Java 17 and the consumer needed a runtime of a component compatible with Java 11
              - Other compatible attribute:
                  - Doesn't say anything about org.gradle.plugin.api-version (required '7.6')
          - Variant 'javadocElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.1-SNAPSHOT declares a runtime of a component, and its dependencies declared externally:

我不想为了解决这个兼容性问题而重新开始我的项目。我宁愿不必在 Java 版本之间切换(我知道 jEnv,只是宁愿暂时将计算机上的所有内容都设置为 Java 11)。有没有办法修复这个项目而不用破坏它并重做它?

java spring spring-boot gradle compatibility
5个回答
9
投票

Ctrl + Alt + S > 构建、执行、部署 > Gradle > Gradle JVM -> java 11 photo x


6
投票

需要Java 17

Spring Boot 3 需要 Java 17 或更高版本。

参见Spring Blog页面,为 Spring Boot 3.0 做准备。引用:

Spring Boot 3.0 将需要 Java 17

另请注意,Spring Boot 3 是一个重大更新,其中的更改破坏了向后兼容性。这些变化包括包名称从

javax.*
jakarta.*
的变化。


你说:

我真的不想使用 Java 17

我无法想象为什么你会选择 Java 11 而不是 Java 17。

大多数在 Java 11 上运行的 Java 应用程序或库都应该在 Java 17 上运行。我不记得有任何有问题的变化,比如在 Java 8 到 9 到 11 之间。

Java 11和Java 17都是长期支持(LTS)版本


1
投票

Spring 3 需要 Java 17 Spring Doc。如果你想使用 Java 11

,你可以在 build.gradle 文件中降级 Springboot 版本(org.springframework.boot)

0
投票

要更改项目的 Java 版本:

  1. 必须使用 JAVA_HOME 将 java 路径设置为环境变量路径,并在路径中进行相同的更改。
  2. 只需删除项目中的 .gradle 和 .idea 文件夹,然后使用相同的 IDE 重新启动项目。
  3. 重要的是,您必须更改与新 Java 版本的源兼容性,并在项目结构中进行相同的更改并配置相同的 JDK 版本。

0
投票

接受的答案对我不起作用。即使设置了Gradle JVM,重启了几次IDE,也没有用。唯一可行的解决方案是将 JAVA_HOME 更改为指向您首选 Java 版本的目录,然后重新启动 IntelliJ。

© www.soinside.com 2019 - 2024. All rights reserved.