java - online - kotlin documentation
Configurando Gradle con Kotlin (3)
Estoy tratando de usar kotlin con gradle, pero no puedo crear un proyecto con Intellij Idea 15 con éxito.
He creado un proyecto simple con dos módulos hello-java
y hello-kotlin
.
hello-java
es un proyecto Java simple y se está compilando y ejecutando perfectamente bien.
hello-kotlin
es un módulo kotin simple, con solo un archivo * .kt y build.gradle
archivo build.gradle
.
Aquí están las fuentes:
construir.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!")
}
configuración del módulo principal.gradle
include ''hello-java''
include ''hello-kotlin''
Al ejecutar gradlew clean build
todos los proyectos se compilan correctamente, pero al ejecutar java -jar hello-kotlin-1.0-SNAPSHOT.jar
siguiente error:
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
Además, Intellij parece no reconocer el directorio src/main/kotlin
como directorio de origen (no está marcado en azul) y no puedo usar la función de autocompletar al editar el archivo HelloKotlin.kt.
Aquí está mi estructura de proyecto en la ventana del proyecto Intellij
He intentado usar la opción Intellij para configurar módulos con Kotlin ( Tools->Kotlin->Configure project with Kotlin
), pero me da el error de que "Todos los módulos con archivos de Kotlin están configurados"
Ayúdame a stackoverflow, eres mi única ayuda.
Al ejecutar Gradlew Clean, todos los proyectos se compilan correctamente, pero cuando se ejecuta java -jar hello-kotlin-1.0-SNAPSHOT.jar, aparece el siguiente error ...
jar {
manifest {
attributes ''Main-Class'': ''HelloKotlinKt''
}
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
Además, Intellij parece no reconocer el directorio src / main / kotlin como directorio de origen (no está marcado en azul) ...
sourceSets {
main.java.srcDirs += ''src/main/kotlin''
}
La documentación y los recursos útiles se pueden encontrar here y there .
Acabo de hacer lo que dice la documentación, y todo funciona bien. "Las fuentes de Kotlin se pueden mezclar con las fuentes de Java en la misma carpeta o en carpetas diferentes. La convención predeterminada es usar carpetas diferentes:
project
- src
- main (root)
- kotlin
- java
La propiedad sourceSets correspondiente debe actualizarse si no se usa la convención predeterminada:
sourceSets {
main.kotlin.srcDirs += ''src/main/myKotlin''
main.java.srcDirs += ''src/main/myJava''
}
Espero que te ayude.
¿Por qué no se ejecuta mi aplicación?
El Jar que estás creando no incluye el tiempo de ejecución de kotlin, ya que Gradle solo creará un Jar con tus archivos de clase. Veo que está usando el complemento de la application
por lo tanto, ya sea $ gradle run
o creando una distribución y ejecutando el script de shell proporcionado, debería funcionar bien. Si quieres enviar kotlin con tu jarra, deberás crear una jarra gruesa.
¿Por qué IDEA no reconoce el directorio de origen?
Sospecho que esto se debe al hecho de que no ha aplicado el complemento de idea
en su archivo de compilación. No he trabajado con Kotlin, pero con otros idiomas es necesario para configurar el área de trabajo correctamente.