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

Posted

技术标签:

【中文标题】Spring Tool Suite:@Configuration 类可能不是最终的。删除 final 修饰符以继续【英文标题】:Spring Tool Suite: @Configuration class may not be final. Remove the final modifier to continue 【发布时间】:2019-06-29 18:56:05 【问题描述】:

由于以下原因,我无法启动我的 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 启动它时它不会工作。

Kotlin 版本:1.2.71 Kotlin eclipse 插件:0.8.13 STS:3.9.5

【问题讨论】:

【参考方案1】:

这个问题可以重复:

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 

可能会解决您的问题。

【讨论】:

如果您说它可能是重复的,请改为标记帖子。 以上问题相似,所以没有标记 将 open 修饰符也添加到方法中。 这不是 kotlin-maven-allopen 的用途吗?【参考方案2】:

我遇到了同样的问题。必须在Preferences &gt; Kotlin &gt; Compiler下配置Kotlin插件并启用Compiler pluginsspring。

Kotlin Compiler Configuration Dialog

【讨论】:

以上是关于Spring Tool Suite:@Configuration 类可能不是最终的。删除 final 修饰符以继续的主要内容,如果未能解决你的问题,请参考以下文章

[置顶] Spring Boot系列教程一:Eclipse安装spring-tool-suite插件

Eclipse添加spring-tool-suite插件

在spring官网上下载历史版本的spring插件,springsource-tool-suite

安装spring tool suite时遇到的问题

eclipse安装spring boot插件spring tool suite

Spring4.0从入门到精通视频教程 - 2. 安装SPRING TOOL SUITE