2017-03-06 86 views
5

我的編譯環境是jdk1.8,運行時環境是jdk1.6。 java gradle插件具有sourceCompatibility屬性。它對java項目有效。
例如:當sourceCompatibility=1.6,編譯器會報錯,如果我使用api如Paths這是從jdk1.7。如何限制kotlin使用上面公佈的java api jdk1.6

sourceCompatibility屬性不適用於kotlin項目。我知道它是java插件的範圍。但是我很奇怪kotlin gradle的插件是否有類似的屬性。 (jvmTarget屬性是1.6在默認情況下,但這並沒有阻止我使用jdk1.7 API)

===我的代碼===

科特林代碼:

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

我想科特林的編譯器報告錯誤,但編譯成功,

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' 
} 

孩子科特林項目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" 
    ... ... 
} 

回答

3

您可以設置科特林編譯器的jdkHome屬性:

compileKotlin { 
    kotlinOptions { 
     jdkHome = '[path to 1.6 JDK]' 
    } 
}