Spring Boot无法识别对kotlin类的更改?

时间:2018-07-05 16:23:43

标签: eclipse spring-boot gradle kotlin spring-tool-suite

在以下情况下,更改未反映在http://localhost:8080/hi的服务响应中:

  1. 在下面的代码中修改SomeController的响应字符串
  2. Spring Tool Suite自动编译更改
  3. Spring Boot DevTools自动重启服务器
  4. http://localhost:8080/hi的请求仍然给出了旧的响应

即使手动运行./gradlew build后,它们也会以某种方式被缓存。

完全不同的问题:我将Java 1.8 JRE和JDK安装在Program Files\Java下的两个目录中。该项目显示了 JRE 依赖性,并且从STS build窗口运行Gradle Tasks会产生 JRE 而不是 JDK ,即使JAVA_HOME已正确设置为JDK,STS仍默认配置为使用JDK(未选中JRE),而Spring Boot Project已配置为使用工作区设置(JDK)。似乎是从IDE运行时本身而不是从设置中获取JRE?我通过右键单击build任务并选择build -> Open Gradle Run Configuration -> Java Home并将其手动设置为与JDK相同的目录来找到解决方法。我还通过右键单击项目Properties -> Java Build Path -> Libraries,删除了JRE System Library并添加了JDK(Add Library... -> JRE System Library -> Workspace default JRE (jdk1.8.0_144)),找到了该项目的解决方法。但是,有时项目会以某种方式将自己重置为JRE。

Gradle Distribution: Gradle wrapper from target build
Gradle Version: 4.5.1
Java Home: C:\Program Files\Java\jre1.8.0_171

代码

package com.example.demo

import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController

@RestController
class SomeController {
    @GetMapping("/hi")
    fun hi(): String {
        return "hey"
    }
}

@SpringBootApplication
open class DemoApplication

fun main(args: Array<String>) {
    runApplication<DemoApplication>(*args)
}

配置

  • Windows 10专业版
  • Spring Tool Suite 3.9.4.RELEASE
  • JDK 1.8
  • 科特林1.2.41
  • Gradle Wrapper 4.5.1
  • Spring Boot + DevTools 2.0.3.RELEASE

设置步骤

  1. STS中具有Gradle Buildship和Kotlin扩展的新工作区
  2. 默认添加JDK 1.8
  3. 创建项目File -> New -> Spring Starter Project
    • Gradle(Buildship 2.x)
    • Java 8
    • 科特林
    • 反应式网页
    • DevTools
    • 执行器
  4. 右键单击项目Configure Kotlin -> Add Kotlin Nature
  5. 启动服务Boot Dashboard -> local -> demo [devtools] [:8080]

0 个答案:

没有答案