如何限制kotlin使用jdk1.6上面公布的java api

Tod*_*.Lu 5 kotlin gradle-plugin

我的编译环境是jdk1.8,运行时环境是jdk1.6.javagradle插件有sourceCompatibility属性.它对java项目有效.
例如:当sourceCompatibility=1.6我使用api 时编译器将报告错误,例如Paths来自jdk1.7 的api .

sourceCompatibility属性不适用于kotlin项目.我知道它超出了java插件的范围.但是我很奇怪kotlingradle的插件是否有类似的属性.(jvmTarget属性默认为1.6,它不会阻止我使用jdk1.7 api)

===我的代码===

kotlin代码:

fun main(args: Array<String>) {
    val pp = Paths.get("/tmp")
    ... ...
}
Run Code Online (Sandbox Code Playgroud)

我希望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'
}
Run Code Online (Sandbox Code Playgroud)

儿童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"
    ... ... 
}
Run Code Online (Sandbox Code Playgroud)

Ing*_*gel 3

您可以设置jdkHomeKotlin 编译器的属性:

compileKotlin {
    kotlinOptions {
        jdkHome = '[path to 1.6 JDK]'
    }
}
Run Code Online (Sandbox Code Playgroud)