Spring Boot Kotlin 项目在 Eclipse 中不起作用

Posted

技术标签:

【中文标题】Spring Boot Kotlin 项目在 Eclipse 中不起作用【英文标题】:Spring Boot Kotlin Project Not Working In Eclipse 【发布时间】:2019-11-27 15:21:03 【问题描述】:

我有一个在eclipse中运行的spring boot项目,有以下版本

Spring Boot: 2.1.6.RELEASE
Kotlin:1.3.41

代码在 IntellIJ 中运行良好 - 但在 eclipse 中出现这些错误

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: @Configuration class 'SwaggerConfig' may not be final. Remove the final modifier to continue.
Offending resource: class path resource [com/kotlin/springboot/kotlindemo/config/SwaggerConfig.class]

这里是 SwaggerConfig 类

@Configuration
@EnableSwagger2
class SwaggerConfig 

    @Bean
    fun api(): Docket = Docket(DocumentationType.SWAGGER_2)
    .select()
    .apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.boot")))
    .build()


我的 pom.xml 文件中有以下插件设置

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

再次,在 IntelliJ 中一切正常,但在 eclipse 中不行 有什么想法可以在eclipse中解决这个问题吗?

谢谢 达米安

【问题讨论】:

您是否尝试从 SwaggerConfig 中删除 final 修饰符? :) 它也不应该在 IntelliJ 中工作(看到错误消息)。 Spring 总是将所有使用@Configuration 注释的类或使用@Cacheable 等代码生成功能的类进行子类化。由于 Kotlin 默认将其类设为最终类,因此您必须明确地将它们设为 open class @Bitman 类没有 final 修饰符。如果我添加 open 它可以工作,但我想使用 kotlin-maven-plugin @roookee - kotlin-maven-plugin 有一个 compilerPlugin 部分,应该采用它。这就是它在 intelliJ 中工作的原因 @roookee - 这个链接更好地描述了插件的功能 - dzone.com/articles/open-your-classes-and-methods-in-kotlin 【参考方案1】:

我升级到最新版本的 kotlin 插件,这解决了我面临的问题。

【讨论】:

【参考方案2】:

在 SwaggerConfig 类声明之前尝试 open Kotlin 修饰符:

open class SwaggerConfig ...

【讨论】:

以上是关于Spring Boot Kotlin 项目在 Eclipse 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot Kotlin 项目在 Eclipse 中不起作用

在 pom.xml 中为 Kotlin 中的 Spring Boot 项目指定 Main 类

带有 kotlin 设置问题的 Spring Boot gradle 项目

使用 Gradle 在 Spring Boot 项目中从 Kotlin 测试中引用 Java 代码时未解决的引用

如何把kotlin+spring boot开发的项目部署在tomcat上

Kotlin Spring Boot bean 验证不起作用