title: IntelliJ Idea 2017.3 unable to start Kotlin Spring Boot App - @Configuration class may not be final
body: <p>I was able to launch a Spring Boot Kotlin App from IntelliJ 2017.3. After the last IntelliJ fix update I cannot start that application from the IDE, getting this exception:</p>
  
  <pre><code>org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: @Configuration class 'AccessConfig' may not be final
  </code></pre>
  
  <p>I can start it from a terminal as usual: <code>java -jar xxxx.jar</code></p>
  
  <p>This doesn't make any sense since I am using the necessary Kotlin Spring plugin in my Gradle config:</p>
  
  <pre><code>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'
  }
  </code></pre>
  
  <p>Any ideas?</p>
  
  <p><strong>UPDATE:</strong></p>
  
  <p>A simpler way to reproduce, just create a Spring Boot project with the Spring initializer from IntelliJ, you'll see the same result:</p>
  
  <p><strong>DemoApplication:</strong></p>
  
  <pre><code>@SpringBootApplication
  class DemoApplication
  
  fun main(args: Array&lt;String&gt;) {
      SpringApplication.run(DemoApplication::class.java, *args)
  }
  </code></pre>
  
  <p><strong>Error:</strong></p>
  
  <pre><code>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
  </code></pre>
  
  <p><strong>build.gradle:</strong></p>
  
  <pre><code>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')
  }
  </code></pre>