如何限制kotlin使用jdk1.6上面公布的java api
我的编译环境是jdk1.8,运行时环境是jdk1.6。 gradle的java
插件有sourceCompatibility
属性。 这是有效的Java项目。
例如:当sourceCompatibility=1.6
,如果我使用api(比如来自jdk1.7的Paths
,编译器会报错。
但sourceCompatibility
属性不适用于kotlin项目。 我明白这是出于java
插件的范围。 但是我很奇怪, kotlin
插件是否有类似的属性。 ( jvmTarget
属性默认是1.6,不会阻止我使用jdk1.7 api)
===我的代码===
科特林代码:
fun main(args: Array<String>) { val pp = Paths.get("/tmp") ... ... }
我想让kotlin的编译器报告错误,但是编译成功了,
父build.gradle
:
buildscript { repositories { jcenter() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.0" } } subprojects { apply plugin: "java" compileJava.sourceCompatibility=1.6 compileJava.targetCompatibility=1.6 compileJava.options.encoding = 'UTF-8' // For ubuntu compileJava.options.bootClasspath = '/usr/lib/jvm/java-6-oracle/jre/lib/rt.jar' }
孩子kotlin项目build.gradle
:
apply plugin: 'application' apply plugin: 'kotlin' mainClassName = 'net.cat.ApplictionKt' version='1.0' jar { manifest { attributes 'Implementation-Title': 'xxxx', 'Implementation-Version': version, 'Main-Class': mainClassName } } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.0" compile "org.jetbrains.kotlin:kotlin-reflect:1.1.0" ... ... }
您可以设置Kotlin编译器的jdkHome
属性:
compileKotlin { kotlinOptions { jdkHome = '[path to 1.6 JDK]' } }