好久沒寫簡書了,中間經(jīng)歷了公司解散,重新面試,和等待通知
去研究了一段時間的區(qū)塊鏈
現(xiàn)在重新回來啦
springboot + kotlin 啟動報錯
項目是通過spring initializr創(chuàng)建的 ,語言選擇的kotlin,選擇了web配置
生成的application如下:
package com.example.demo
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
@SpringBootApplication
class DemoApplication
fun main(args: Array<String>) {
SpringApplication.run(DemoApplication::class.java, *args)
}
配置文件太長就沒必要粘貼上來了
這個時候我們按以前的方式啟動這個demo
出現(xiàn)以下異常:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: @Configuration class 'DemoApplication' may not be final.
Remove the final modifier to continue.
Offending resource: com.example.demo.DemoApplication
大家特別注意這一句:
@Configuration class 'DemoApplication' may not be final.
回頭看下我們的DemoApplication沒毛病啊 spring initializr 幫我們生成的呀.
這是由于kotlin中所有類和方法默認都是final的,不能直接繼承或重寫
那如何解決呢?
需要繼承的類或類中要重寫的方法都應當在定義時添加open關鍵字。
我們?nèi)バ薷腄emoApplication代碼,在class前面加上open
open class DemoApplication
重新啟動,問題搞定