用Kotlin配置Gradle
我试图用gradle来使用kotlin,但是我无法用Intellij Idea 15成功地创建一个项目。
我已经创建了两个模块hello-java
和hello-kotlin
简单项目。
hello-java
是普通的java项目,它正在编译和运行非常好。
hello-kotlin
是简单的kotin模块,只有一个* .kt文件和build.gradle
文件。
这里是来源:
的build.gradle
group 'pl.fzymek.kotlin' version '1.0-SNAPSHOT' buildscript { repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:0.10.4" } } apply plugin: 'kotlin' apply plugin: 'application' mainClassName = 'HelloKotlinKt' repositories { mavenCentral() } jar { manifest { attributes 'Main-Class': mainClassName } } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:0.10.4" }
HelloKotlin.kt
fun main(args: Array<String>) { println("Hello, Kotlin!") }
主要模块settings.gradle
include 'hello-java' include 'hello-kotlin'
在运行gradlew clean build
所有项目都编译成功,但是在运行java -jar hello-kotlin-1.0-SNAPSHOT.jar
以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics at HelloKotlinKt.main(HelloKotlin.kt) Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 1 more
更重要的是,Intellij似乎不认识src/main/kotlin
目录作为源目录(它没有标记为蓝色),我不能在编辑HelloKotlin.kt文件时使用自动完成功能。
这是我在Intellij项目窗口中的项目结构
我已经尝试使用Intellij选项来配置模块与Kotlin( Tools->Kotlin->Configure project with Kotlin
),但它给了我错误,“所有与kotlin文件模块配置”
帮帮我stackoverflow,你是我唯一的帮助。
当运行gradlew干净构建所有项目编译成功,但运行java -jar hello-kotlin-1.0-SNAPSHOT.jar时,我得到以下错误…
jar { manifest { attributes 'Main-Class': 'HelloKotlinKt' } from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } }
更重要的是,Intellij似乎不认识src / main / kotlin目录作为源目录(它没有标记为蓝色)…
sourceSets { main.java.srcDirs += 'src/main/kotlin' }
文件和有用的资源可以在这里和那里找到。
为什么我的应用程序不能运行?
你正在创建的Jar不包括kotlin运行时,因为Gradle只会用你的类文件构建一个Jar。 我看到你正在使用application
插件,所以要么$ gradle run
或创建一个分配,并通过提供的shell脚本执行应该工作正常。 如果你想用你的罐子运送kotlin,你需要创建一个胖罐子。
IDEA为什么不识别源目录?
我怀疑这是由于你没有在构建文件中应用idea
插件。 我还没有用Kotlin做过任何工作,但是用其他语言来说,这是正确设置工作空间所必需的。
我只是做文档说,并且都工作正常。 “Kotlin资源可以在同一个文件夹或不同文件夹中与Java资源混合使用。默认约定是使用不同的文件夹:
project - src - main (root) - kotlin - java
如果不使用默认约定,则应更新相应的sourceSets属性:
sourceSets { main.kotlin.srcDirs += 'src/main/myKotlin' main.java.srcDirs += 'src/main/myJava' }
希望它对你有帮助。