studio online koans convertir convert codigo code java intellij-idea kotlin

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.