Конфигурирование Gradle с помощью Kotlin
Я пытаюсь использовать kotlin с gradle, но я не могу успешно создать проект с 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!")
}
настройки главного модуля .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, ты моя единственная помощь.
Ответы
Ответ 1
При выполнении строчной сборки 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'
}
Документацию и полезные ресурсы можно найти здесь и там.
Ответ 2
Почему мое приложение не запускается?
Создаваемый Jar не включает время выполнения kotlin, поскольку Gradle будет создавать Jar только с вашими файлами класса. Я вижу, что вы используете плагин application
, поэтому либо выполнение $ gradle run
, либо создание дистрибутива и выполнение через предоставленную оболочку script должны работать нормально. Если вы хотите отправить котлин с помощью Jar, вам нужно создать толстую банку.
Почему IDEA не распознает исходный каталог?
Я подозреваю, что это связано с тем, что вы не применили плагин idea
в файле сборки. Я не работал с Kotlin, но с другими языками это необходимо для правильной настройки рабочего пространства.
Ответ 3
Я просто делаю эту документацию, и все работает нормально.
"Источники Kotlin могут быть смешаны с источниками Java в одной папке или в разных папках. Стандартное соглашение использует разные папки:
project
- src
- main (root)
- kotlin
- java
Соответствующее свойство sourceSets должно быть обновлено, если не использовать соглашение по умолчанию:
sourceSets {
main.kotlin.srcDirs += 'src/main/myKotlin'
main.java.srcDirs += 'src/main/myJava'
}
Надеюсь, это поможет вам.