[서버][스프링][Kotlin] org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: @Configuration class 'Application' may not be final. Remove the final modifier to continue.

프로그래밍/서버2021. 3. 26. 21:03

문제 현상

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: @Configuration class 'Application' may not be final. Remove the final modifier to continue.

 

자바 코드를 코틀린으로 자동 변환하고 실행시키니 위의 에러가 발생했습니다.

원인

@SpringBootApplication
object Application {
    @JvmStatic
    fun main(args: Array<String>) {
        SpringApplication.run(Application::class.java, *args)
    }
}

자동 변환된 코틀린 코드는 위와 같습니다. 

코틀린에서 변형된 바이트 코드?에서 위 클래스가 final이라서 발생하는 문제로 보입니다.

 

 

해결 방법

다른 방법이 있는지는 모르겠으나 start.spring.io/에서 코틀린 프로젝트를 다운받아 코드를 비교해봤습니다.

@SpringBootApplication
class DemoApplication

fun main(args: Array<String>) {
	runApplication<DemoApplication>(*args)
}

예제 코드는 심지어 더 짧게 되어있습니다.

제 코드도 이렇게 바꾸고 빌드를 해봤으나 계속 에러가 발생했습니다.

 

오류: com.dreamaz.gongga.room.Application 클래스에서 기본 메소드를 찾을 수 없습니다. 다음 형식으로 기본 메소드를 정의하십시오.
   public static void main(String[] args)
또는 JavaFX 애플리케이션 클래스는 javafx.application.Application을(를) 확장해야 합니다.

 

계속 이것저것 비교해본 결과.. Run/Debug Configurations도 코틀린용으로 변경을 해야하네요.

Application 코틀린 파일을 마우스 우클릭하여 나오는 메뉴에서 Run을 누르면 자동으로 코틀린용으로 run이 됩니다.

그렇지 않고.. 최근에 실행한 run을 누르면 자바용으로 run이 됩니다.

 

설정에서 이렇게 차이가 있습니다.

 

실제로 사용되는 빌드 명령어를 보면 아주 약간의 차이가 있습니다.

명령어가 너무 길어서 마지막 다른 부분만 잘랐습니다.

코틀린으로 실행되면 ApplicationKT처럼 명시되네요.

 

코틀린으로 최대한 만들어볼 예정이니 코틀린으로 돌려봐야겠습니다.

 

참고

kotlinlang.org/docs/object-declarations.html#object-expressions

 

Object expressions and declarations | Kotlin

 

kotlinlang.org

stackoverflow.com/questions/54543168/spring-tool-suite-configuration-class-may-not-be-final-remove-the-final-modif

 

Spring Tool Suite: @Configuration class may not be final. Remove the final modifier to continue

I am unable to launch my spring boot kotlin app, due to the following: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: @Configuration class '

stackoverflow.com

 

작성자

Posted by 드리머즈

관련 글

댓글 영역