Spring Tool Suite:@Configuration类可能不是最终的。删除最终修饰符以继续

时间:2019-02-05 21:16:43

标签: eclipse kotlin

由于以下原因,我无法启动我的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

2 个答案:

答案 0 :(得分:1)

我有同样的问题。您必须在Kotlin下配置Preferences > Kotlin > Compiler插件并启用Compiler plugins spring。

Kotlin Compiler Configuration Dialog

答案 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 

可能会解决您的问题。