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

0pizxfdo  于 2022-12-23  发布在  Java
关注(0)|答案(3)|浏览(693)

我最近使用IntelliJ启动了一个新的Sping Boot Gradle项目。创建项目时,我选择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)。有没有一种方法可以修复这个项目,而不用丢弃它并重做它?

8oomwypt

8oomwypt1#

需要Java 17

Spring Boot 3需要Java 17或更高版本。
请参见 * Spring博客 * 页面Preparing for Spring Boot 3.0。引用如下:
Spring Boot 3.0将需要Java 17
另外请注意,Spring Boot 3是一个重大更新,其中一些更改破坏了向后兼容性。这些更改包括软件包名称从javax.*更改为jakarta.*
你说:
我不太想使用Java 17
我无法想象为什么您会选择Java11而不是Java17。
大多数在Java11上运行的Java应用程序或库都应该在Java17上运行。我不记得有任何像Java8到9到11之间那样有问题的变化。
Java 11和Java 17都是long-term support (LTS)版本。

g9icjywg

g9icjywg2#

Spring 3需要Java 17 Spring文档。如果您想使用Java 11,可以在build.gradle文件中降级Springboot版本(org.springframework.boot

mzsu5hc0

mzsu5hc03#

IntelliJ IDEA〉首选项〉构建、执行、部署〉Gradle〉Gradle JVM -〉java 11 photo x

相关问题