如何限制kotlin使用jdk1.6上面公布的javaapi
How to restrict kotlin from using java api which is announced above jdk1.6
我的编译环境是jdk1.8,运行环境是jdk1.6。 java
gradle 的插件具有 sourceCompatibility
属性。它对 java 项目有效。
例如:当sourceCompatibility=1.6
时,如果我使用api,比如来自jdk1.7的Paths
,编译器会报错。
但 sourceCompatibility
属性不适用于 kotlin 项目。我知道它超出了 java
插件的范围。但是我很奇怪 gradle 的 kotlin
插件是否没有类似的属性。 (jvmTarget
属性默认是1.6,不妨碍我使用jdk1.7api)
===我的代码===
科特林代码:
fun main(args: Array<String>) {
val pp = Paths.get("/tmp")
... ...
}
我想让kotlin的编译器报错,但是编译成功了,
parent 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'
}
child 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]'
}
}
我的编译环境是jdk1.8,运行环境是jdk1.6。 java
gradle 的插件具有 sourceCompatibility
属性。它对 java 项目有效。
例如:当sourceCompatibility=1.6
时,如果我使用api,比如来自jdk1.7的Paths
,编译器会报错。
但 sourceCompatibility
属性不适用于 kotlin 项目。我知道它超出了 java
插件的范围。但是我很奇怪 gradle 的 kotlin
插件是否没有类似的属性。 (jvmTarget
属性默认是1.6,不妨碍我使用jdk1.7api)
===我的代码===
科特林代码:
fun main(args: Array<String>) {
val pp = Paths.get("/tmp")
... ...
}
我想让kotlin的编译器报错,但是编译成功了,
parent 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'
}
child 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]'
}
}