[SPRING] IntelliJ Idea 2017.3 Kotlin Spring Boot App을 시작할 수 없음 - @Configuration 클래스가 최종적이지 않을 수 있음
SPRINGIntelliJ Idea 2017.3 Kotlin Spring Boot App을 시작할 수 없음 - @Configuration 클래스가 최종적이지 않을 수 있음
IntelliJ 2017.3에서 Spring Boot Kotlin App을 시작할 수있었습니다. 마지막 IntelliJ 픽스 업데이트 후 IDE에서 해당 응용 프로그램을 시작할 수 없으므로이 예외가 발생합니다.
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: @Configuration class 'AccessConfig' may not be final
평소와 같이 터미널에서 시작할 수 있습니다. java -jar xxxx.jar
내 Gradle 구성에서 필요한 Kotlin Spring 플러그인을 사용하고 있기 때문에 이것은 의미가 없습니다.
buildscript {
ext {
kotlinVersion = '1.2.21'
springBootVersion = '2.0.0.RC1'
}
repositories {
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
jcenter()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}")
classpath("org.jetbrains.kotlin:kotlin-allopen:${kotlinVersion}")
classpath 'org.asciidoctor:asciidoctor-gradle-plugin:1.5.3'
classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.2'
classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.5"
}
}
apply plugin: 'kotlin'
apply plugin: 'kotlin-spring'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'maven'
...
sourceCompatibility = 1.8
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
repositories {
mavenLocal()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
maven { url "http://repo.maven.apache.org/maven2" }
maven { url 'https://jitpack.io' }
}
ext {
springCloudVersion = 'Finchley.M5'
mmaReleaseTrainVersion = 'Callao-SNAPSHOT'
junitVersion = '5.0.2'
}
어떤 아이디어?
최신 정보:
더 간단한 방법으로 재생산하고, IntelliJ 용 Spring initializr을 가진 Spring Boot 프로젝트를 만들면 같은 결과를 볼 수 있습니다 :
DemoApplication :
@SpringBootApplication
class DemoApplication
fun main(args: Array<String>) {
SpringApplication.run(DemoApplication::class.java, *args)
}
오류:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: @Configuration class 'DemoApplication' may not be final. Remove the final modifier to continue.
Offending resource: com.example.demo.DemoApplication
build.gradle :
buildscript {
ext {
kotlinVersion = '1.2.10'
springBootVersion = '1.5.10.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}")
classpath("org.jetbrains.kotlin:kotlin-allopen:${kotlinVersion}")
}
}
apply plugin: 'kotlin'
apply plugin: 'kotlin-spring'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
repositories {
mavenCentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
compile("org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlinVersion}")
compile("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")
testCompile('org.springframework.boot:spring-boot-starter-test')
}
해결법
-
==============================
1.우선, 클래스 Kotlin 클래스 정의에 의한 것입니다.
우선, 클래스 Kotlin 클래스 정의에 의한 것입니다.
소스 코드를 자유롭게 수정할 수 있다면 클래스를 final로 만들지 말고 다음과 같이 서명을 추가하면됩니다.
@SpringBootApplication open class DemoApplication fun main(args: Array<String>) { SpringApplication.run(DemoApplication::class.java, *args) } }
또는이 기사에 따르면 가능한 해결책 중 하나 :
@SpringBootApplication 주석을 제거하고 @EnableAutoConfiguration 및 @ComponentScan을 사용하여 클래스에 주석을 추가하여이 문제를 해결하는 것이 좋습니다.
-
==============================
2.IntelliJ의 Kotlin이 1.2.21로 업그레이드되는 것을 수정했습니다. https://plugins.jetbrains.com/plugin/6954-kotlin/update/42501
IntelliJ의 Kotlin이 1.2.21로 업그레이드되는 것을 수정했습니다. https://plugins.jetbrains.com/plugin/6954-kotlin/update/42501
-
==============================
3.플러그인 업데이트로 도움이되지 않는다면, kotlin의 버전이 ide의 kotlin 버전과 일치하는지 확인하십시오.
플러그인 업데이트로 도움이되지 않는다면, kotlin의 버전이 ide의 kotlin 버전과 일치하는지 확인하십시오.
-
==============================
4.IntelliJ에서 kotlin-spring 플러그인을 사용하는 경우에도이 오류가 발생하면 IntelliJ에서 주석 처리가 활성화되었는지 확인할 수 있습니다.
IntelliJ에서 kotlin-spring 플러그인을 사용하는 경우에도이 오류가 발생하면 IntelliJ에서 주석 처리가 활성화되었는지 확인할 수 있습니다.
from https://stackoverflow.com/questions/48544015/intellij-idea-2017-3-unable-to-start-kotlin-spring-boot-app-configuration-cla by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 MVC로 http 요청을 제대로 로깅하는 법 (0) | 2019.06.20 |
---|---|
[SPRING] 스프링 @Autowired 클래스의 새 인스턴스 (0) | 2019.06.19 |
[SPRING] 도저를 스프링 부트와 함께 사용하는 방법? (0) | 2019.06.18 |
[SPRING] 스프링 : 스프링 보안 사용자에게 사용자 정의 세부 정보 추가 (0) | 2019.06.17 |
[SPRING] @Query에서 @Param을 건너 뛰는 방법 Spring 데이터 JPA에서 null 또는 비어있는 경우 (0) | 2019.06.17 |