当前位置: 首页 > 知识库问答 >
问题:

将Spring Boot应用程序迁移到最新的Java版本(Java15)

仰翰采
2023-03-14

这就是我的构建。Gradle的样子:

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import java.lang.System.getenv

buildscript {
repositories {
    maven {
        url = uri("https://plugins.gradle.org/m2/")
    }
 }
 dependencies {
    classpath("org.jmailen.gradle:kotlinter-gradle:3.0.2")
 }
}

plugins {
 id("org.springframework.boot") version "2.4.0"
 id("io.spring.dependency-management") version "1.0.10.RELEASE"
 kotlin("jvm") version "1.4.0"
 kotlin("plugin.spring") version "1.4.0"
 id ("org.owasp.dependencycheck") version "5.3.2"
 id ("com.github.spotbugs") version "4.5.0"
 id ("org.jmailen.kotlinter") version "3.0.2"
 `jacoco`
}

tasks.named<org.springframework.boot.gradle.tasks.run.BootRun>. 
("bootRun") {
 args("--spring.profiles.active=local")
}

jacoco {
toolVersion = "0.8.6"
}

group = "au.project"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_1_8

repositories {
mavenCentral()
maven {
    url = uri("https://...")
    credentials {
        username = getenv("ARTIFACTORY_USER")
        password = getenv("ARTIFACTORY_PASSWORD")
     }
  }
}

dependencies {
implementation("org.springframework.boot:spring-boot-starter- 
webflux")
implementation("com.fasterxml.jackson.module:jackson-module- 
 kotlin")
implementation("io.github.microutils:kotlin-logging:1.8.3")
implementation("io.projectreactor.kotlin:reactor-kotlin- 
extensions")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
implementation("org.owasp:dependency-check-gradle:5.3.2")
implementation("org.springdoc:springdoc-openapi-kotlin:1.4.8")
implementation("org.springdoc:springdoc-openapi-webflux-ui:1.4.8")
developmentOnly("org.springframework.boot:spring-boot-devtools")
testImplementation("org.springframework.boot:spring-boot-starter- 
test") {
    exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
 }
  testImplementation("io.projectreactor:reactor-test")
  testImplementation("com.github.tomakehurst:wiremock-jre8:2.27.2")
  testImplementation("com.openpojo:openpojo:0.8.6")
  }

 tasks.withType<Test> {
 useJUnitPlatform()
 }

 tasks.withType<KotlinCompile> {
 kotlinOptions {
    freeCompilerArgs = listOf("-Xjsr305=strict")
    jvmTarget = "14"
 }
}
....

注意:对于build.gradle中的kotlinOptions属性,jvmTarget=15,我得到以下异常:“未知的JVM目标版本:15支持的版本:1.6、1.8、9、10、11、12、12、14。这是否意味着Kotlin不支持Java15?

共有1个答案

孙朝明
2023-03-14

JDK 15需要Gradle 6.7.x,如果您还没有更新Gradle的话,请先更新Gradle。

我建议您使用Gradle的新toolchain特性。如果在主机系统上检测不到,它将下载构建代码所需的JDK,以保证构建是用所需的JDK版本执行的。这也简化了在不同环境中使用混合团队的正确构建。

java {
    toolchain {
        // automatically download a jdk for the build if not available
        languageVersion.set(JavaLanguageVersion.of(11))
    }
}

这不能与java.sourceCompatibilityjava.targetcompatibility一起工作,您需要删除这些配置。

 类似资料:
  • 今天早上,我从谷歌的开发者控制台收到一封邮件,说我正在使用一个存在安全漏洞的OpenSSL版本。 实际上我只是在维护代码,我还没有开发它。但是,我应该解决这个问题。 我想知道如何在我的Android应用程序中将打开的SSL更新到最新的支持版本。 尝试了很多搜索,但没有如何在Android应用程序中执行此操作。 对于今天早上收到相同邮件的所有开发人员来说,这将是一个解决方案。 提前谢谢。

  • 我正在探索将java web应用程序移动到Azure应用程序服务的可能性。应用程序on prem在启动时读取属性文件。 是否有可能将属性文件传递或放置到应用服务?如果没有,建议将此类遗留应用程序移动到Azure应用服务?

  • 利用 Creative Cloud 桌面应用程序,可以快速将您的所有应用程序更新至最新版本。您可以单独更新已安装的应用程序,也可以同时更新所有应用程序。 更新 Creative Cloud 应用程序 注意:默认情况下,Creative Cloud 应用程序的所有早期版本会在您更新至最新版本时被卸载。如果要保留以前安装的版本,请记住在开始更新过程之前更改默认设置。关更多信息,请参阅高级选项。 如何检

  • 利用 Creative Cloud 桌面应用程序,可以快速将您的所有应用程序更新至最新版本。您可以单独更新已安装的应用程序,也可以同时更新所有应用程序。 更新 Creative Cloud 应用程序 注意:默认情况下,Creative Cloud 应用程序的所有早期版本会在您更新至最新版本时被卸载。如果要保留以前安装的版本,请记住在开始更新过程之前更改默认设置。关更多信息,请参阅高级选项。 如何检

  • 我有一个Web项目,我很容易在tomcat上对其进行depoly。事实上,我有一个实现的类(这个类真的很胖),因为你知道每个支持servlet 3.0的应用程序服务器,它可以很容易地检测到它并尝试启动它。现在我想知道是否可以使用Spring启动启动器,并且无需任何进一步的配置,我将我的传递给它,并根据我的启动我的项目进行Spring启动? 我只想使用spring boot的方法在Tomcat上部署

  • 我正在尝试将运行在Jboss eap-6.3服务器上的应用程序传输到Wildfly 9服务器上。 独立日志 谁能帮帮我吗?我是JBoss和Wildfly环境的新手