最近使用的一個jar包裏面用到了java8 中接口的 static方法。這樣編譯的時候在gradle的build文件中要添加一點配置才行。
普通的java工程在build.gradle中添加如下配置就可以了:
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
這樣java8的新特性也是可以正常編譯了,但是上面的配置只是針對java代碼的編譯,kotlin代碼編譯的時候依然是使用的jdk1.6在編譯。
要想kotlin也用jdk1.8編譯,需要添加kotlin相關的編譯配置,如下:
kotlinOptions { jvmTarget = '1.8' }
如果沒有加上面的設置,老版本的kotlin可以編譯,但是運行時會報錯,新版本的kotlin編譯時就會報錯:
Error:(20, 31) Calls to static methods in Java interfaces are prohibited in JVM target 1.6. Recompile with '-jvm-target 1.8'