Problem
I am trying to run the newest kotlin version (1.2.10) with also, the newest spring boot (2.0.0.M7).
In the local enviroment everything is fine, however -boottime intellij cries :
I have seen Outdated Kotlin Runtime, but in my opinion it is not connected so... That is suspicious because of my following build.gradle, where there is only one version of kotlin (only right one) [frontend is also gradle build but node.js one - angular, no kotlin deps]:
buildscript {
ext {
kotlinVersion = '1.2.10'
springBootVersion = '2.0.0.M7'
}
repositories {
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
maven { url "http://repo.spring.io/libs-milestone-local" }
}
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.springframework:springloaded:1.2.6.RELEASE'
}
}
apply plugin: 'kotlin'
apply plugin: 'kotlin-spring'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'idea'
group = 'com.witkups'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
idea {
module {
inheritOutputDirs = false
outputDir = file("$buildDir/classes/main/")
}
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
repositories {
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
maven { url "http://repo.spring.io/libs-milestone-local" }
}
dependencies {
compile project(":frontend")
compile('org.springframework.boot:spring-boot-starter-actuator')
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-starter-security')
compile('org.springframework.boot:spring-boot-starter-webflux')
compile("org.springframework.boot:spring-boot-starter-web:${springBootVersion}")
runtime('org.springframework.boot:spring-boot-devtools')
runtime('com.microsoft.sqlserver:mssql-jdbc')
compile('com.fasterxml.jackson.datatype:jackson-datatype-jsr310')
compile('com.fasterxml.jackson.module:jackson-module-kotlin:2.9.2')
compile("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")
compile("org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlinVersion}")
compile("io.jsonwebtoken:jjwt:0.7.0")
testCompile('com.h2database:h2')
testCompile('org.springframework.security:spring-security-test')
testCompile('org.springframework.boot:spring-boot-starter-test')
testCompile('io.projectreactor:reactor-test')
}
and that worries me because of warn in build (and fails in tests as i guess):
w: Runtime JAR files in the classpath should have the same version. These files were found in the classpath:
/home/travis/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-reflect/1.2.10/19bc012f8c4cd6b705bd6512263777cc19bcf259/kotlin-reflect-1.2.10.jar (version 1.2)
/home/travis/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jre8/1.2.10/71c98c16b4bed3f754c6c398f9da8300ecb0a669/kotlin-stdlib-jre8-1.2.10.jar (version 1.2)
/home/travis/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jre7/1.1.61/59dfce93b1995717338435dd974884007d8e8474/kotlin-stdlib-jre7-1.1.61.jar (version 1.1)
/home/travis/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.61/fa7813a26c548c9c412dd2d42fb466cfcd8dcf3c/kotlin-stdlib-1.1.61.jar (version 1.1)
w: Some runtime JAR files in the classpath have an incompatible version. Consider removing them from the classpath or use '-Xskip-runtime-version-check' to suppress this warning
:spring-boot-server:compileTestJava NO-SOURCE
:spring-boot-server:processTestResources
:spring-boot-server:testClasses
:spring-boot-server:testPicked up _JAVA_OPTIONS: -Xmx2048m -Xms512m
com.witkups.carsharing.CarSharingApplicationTests > contextLoads FAILED
java.lang.IllegalStateException
Caused by: java.lang.IllegalStateException
Caused by: java.lang.NoClassDefFoundError
Caused by: java.lang.ClassNotFoundException
1 test completed, 1 failed
:spring-boot-server:test FAILED
test:
package com.witkups.carsharing
import org.junit.Test
import org.junit.runner.RunWith
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.test.context.junit4.SpringRunner
@RunWith(SpringRunner::class)
@SpringBootTest
class CarSharingApplicationTests {
@Test
fun contextLoads() {
}
}
Any help will be appreciated :) PS: JDK 8
Solution
I have added following lines in build.gradle
script:
compile("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")
compile("org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlinVersion}")
compile("org.jetbrains.kotlin:kotlin-stdlib-jre7:${kotlinVersion}")
compile("org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion}")
and works like a charm. Tests stopped failing when i replaced
@RunWith(SpringRunner::class)
with
@ExtendWith(SpringExtension::class)