У меня странная проблема, когда JVM, используемая моей задачей compileKotlin
, кажется, отличается от той, которую использует сам Gradle. Это как-то связано с версией плагина gradle-intellij-plugin, который я использую для сборки плагина IntelliJ - в настоящее время я использую плагин 0.3.10, и все в моем скрипте сборки должно быть настроено на использование Java 8 для компиляции. Однако, когда я обновляю плагин до 0.5.0-SNAPSHOT, потому что мне нужно протестировать мой плагин на новом Java 11 JBSDK, я начинаю получать ошибки компиляции, такие как:
> Task :compileKotlin FAILED
e: /Users/colin/dev/cursive/src/main/kotlin/cursive/debugger/Fragment.kt: (95, 25): Cannot access class 'com.sun.jdi.StringReference'. Check your module classpath for missing or conflicting dependencies
указывает на то, что мой код Kotlin компилируется с использованием более 9 JDK.
Я добавил следующее в мой скрипт сборки:
println "Java version: ${JavaVersion.current()}, \$JAVA_HOME = ${System.properties['java.home']}"
, что приводит к:
Java version: 1.8, $JAVA_HOME = /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre
Я также положил:
ext.javaHome = System.properties['java.home']
в моем buildscript
блоке, а затем:
compileKotlin {
kotlinOptions {
jdkHome = javaHome
jvmTarget = "1.8"
}
}
но я все еще получаю ту же ошибку.
Есть идеи, почему это так, или идеи для дальнейшей диагностики?