出于兼容性原因,我的项目使用jdk 7。
build.gradle
的底部
buildscript {
ext.kotlin_version = '1.2.0'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
当我使用jdk 7进行gradle时,我得到了这个:
java.lang.UnsupportedClassVersionError: org/jetbrains/kotlin/gradle/KotlinGradleModel : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at org.gradle.tooling.internal.provider.serialization.DefaultPayloadClassLoaderRegistry$2.resolveClass(DefaultPayloadClassLoaderRegistry.java:91)
at org.gradle.tooling.internal.provider.serialization.WellKnownClassLoaderRegistry$2.resolveClass(WellKnownClassLoaderRegistry.java:91)
at org.gradle.tooling.internal.provider.serialization.PayloadSerializerObjectInputStream.readClass(PayloadSerializerObjectInputStream.java:66)
... cut
如果我在项目jdk仍为jdk7时切换到jdk 8运行等级,则构建成功。这是预期的行为吗?
答案 0 :(得分:2)
经过数小时的研究,我终于找到了这篇文章:
https://blog.jetbrains.com/kotlin/2017/04/kotlin-1-1-2-is-out/
Kotlin编译器现在需要运行JDK 8。你不应该注意到 任何变化,因为大多数其他Java开发工具,如Gradle Android工具链也需要JDK 8,所以你几乎可以肯定 已经安装好了。对于编译器生成的代码,Java 1.6兼容性仍然是默认设置,我们没有计划放弃对生成Java 1.6兼容字节码的支持。
所以,答案是否定的。