如何在Spring Boot Kotlin项目中修复“未解决的参考:java”?

时间:2019-08-07 07:13:40

标签: java spring spring-boot kotlin

我用以下方法创建了Spring Boot项目

  • SDK 11. Java版本11.0.3
  • 科特林语作为语言
  • Gradle

我正在关注本教程: https://scotch.io/@grahamcox82/how-to-build-a-simple-rest-api-with-kotlin-and-spring-boot

我正在尝试

import java.time.Instant

在我的Kotlin数据类中

有错误

  

未解决的参考:java

build.gradle.kts文件:

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    id("org.springframework.boot") version "2.1.6.RELEASE"
    id("io.spring.dependency-management") version "1.0.7.RELEASE"
    kotlin("jvm") version "1.2.71"
    kotlin("plugin.spring") version "1.2.71"
}

group = "com.smight"
version = "0.0.1"
java.sourceCompatibility = JavaVersion.VERSION_1_8

val developmentOnly by configurations.creating
configurations {
    runtimeClasspath {
        extendsFrom(developmentOnly)
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-data-mongodb")
    implementation("org.springframework.boot:spring-boot-starter-webflux")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    developmentOnly("org.springframework.boot:spring-boot-devtools")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
    testImplementation("io.projectreactor:reactor-test")
}

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

也许我应该安装Java库?我该如何检查? 有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

根据一些研究,此错误可能在这种情况下出现:

  • 您创建的是Kotlin2Js项目而不是Kotlin JVM(source),请尝试通过选择正确的项目类型来重新创建项目

  • 您使用的Kotlin版本不支持JDK 11(source),请改为安装JDK 8,然后重新配置您的JAVA_HOME环境变量

您的build.gradle文件中也可能有错误,如果上述解决方案无效,请在问题中复制/粘贴

答案 1 :(得分:0)

问题是从IntelliJ中找不到JDK正确

我已解决了问题,

  1. 文件->项目结构-> SDK->“ +”
  2. 找到安装SDK的路径
  3. 新项目
  4. 复制/粘贴
  5. 重建

答案 2 :(得分:0)

要获取更具体的错误,请先清除自动生成的文件

$ ./gradlew clean

在使用Kotlin DSL的模块化Spring项目中,由于子模块是可引导的,因此可能会发生unresolved reference错误。

build.gradle.kts(项目)

...

subprojects {

    ...

    tasks.getByName<BootJar>("bootJar") {
        enabled = false
    }

    tasks.getByName<Jar>("jar") {
        enabled = true
    }

}

GL