Intereting Posts
TornadoFX – удалить элемент с помощью контекстного меню правой кнопкой мыши Загрузка и установка APK с использованием волейбола Как заменить FrameLayout на активность фрагментом? Все возможные комбинации из двух списков Что такое конфигурация generateStubs в Котлине? В чем разница между фигурными фигурными скобками и нормальными скобками в RxJava с Kotlin Макеты Anko – отличительные макеты в applyRecursively kotlin map добавляет значение, если не равно Что сделает HashMap (it)? Синглтон с аргументом в Котлине Наличие getter возвращает тип с нулевым значением, даже если поле поддержки является нулевым Использование в операторе для сравнения строки с диапазоном строк SparkJava не может работать вместе с некоторыми API-интерфейсами Google Youtube Почему я не могу указать, где я хочу, чтобы мой файл Kotlin был удален в Android Studio? Не удается написать основной конструктор класса Activity в Kotlin в Android

Настройка Gradle с Kotlin

Я пытаюсь использовать kotlin с gradle, но я не могу успешно создать проект с Intellij Idea 15.

Я создаю простой проект с двумя модулями hello-java и hello-kotlin .

hello-java – это простой Java-проект, и он отлично компилируется и работает.

hello-kotlin – простой модуль котина, с одним файлом * .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, ты моя единственная помощь.

Solutions Collecting From Web of "Настройка Gradle с Kotlin"

При запуске градирной чистой сборки все проекты скомпилированы успешно, но при запуске 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 либо создание дистрибутива, а выполнение через предоставленный сценарий оболочки должно работать нормально. Если вы хотите отправить котлин с помощью Jar, вам нужно создать толстую банку.

Почему 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' } 

Надеюсь, это поможет вам.