由于以下原因,我无法启动我的spring boot kotlin应用程序:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: @Configuration class 'TestApplication' may not be final. Remove the final modifier to continue.
我知道@configuration和@bean类不能是最终的,所以我在pom文件中添加了allopen插件:
<build>
<sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<configuration>
<args>
<arg>-Xjsr305=strict</arg>
</args>
<compilerPlugins>
<plugin>spring</plugin>
</compilerPlugins>
</configuration>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-allopen</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
如果我打包我的应用程序并运行它(java -jar),它会工作,但是当我尝试从STS启动它时,它将无法工作。
科特林版本:1.2.71 Kotlin eclipse插件:0.8.13 STS:3.9.5
答案 0 :(得分:1)
我有同样的问题。您必须在Kotlin
下配置Preferences > Kotlin > Compiler
插件并启用Compiler plugins
spring。
答案 1 :(得分:0)
此问题可以重复出现:
IntelliJ Idea 2017.3 unable to start Kotlin Spring Boot App - @Configuration class may not be final
或
Used kotlin-spring plugin, still getting class not open error
。 无论如何,我刚刚找到了解决方案
您只需要向TestApplication kotlin类添加open修饰符
@SpringBootApplication
open class TestApplication
可能会解决您的问题。