Configurando Gradle con Kotlin

Intento usar kotlin con gradle, pero no puedo crear con éxito un proyecto con Intellij Idea 15.

He creado un proyecto simple con dos modules hello-java y hello-kotlin .

hello-java es un proyecto simple de Java y está comstackndo y ejecutándose perfectamente bien.

hello-kotlin es un module simple de kotin, con solo un file * .kt y build.gradle file build.gradle .
Aquí están las fonts:

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!") } 

module principal settings.gradle

 include 'hello-java' include 'hello-kotlin' 

Cuando gradlew clean build todos los proyectos se comstackn con éxito, pero cuando 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 directory src/main/kotlin como directory de origen (no está marcado en azul) y no puedo usar la function de autocomplete al editar el file HelloKotlin.kt.

Aquí está mi estructura de proyecto en la window del proyecto Intellij

enter image description here

He intentado usar la opción Intellij para configurar modules con Kotlin ( Tools->Kotlin->Configure project with Kotlin ), pero me da error de que "Todos los modules con files kotlin están configurados"

Ayúdame a stackoverflow, eres mi única ayuda.

Cuando ejecuto gradlew clean build todos los proyectos se comstackn con éxito, pero cuando ejecuto java -jar hello-kotlin-1.0-SNAPSHOT.jar obtengo el siguiente error …

 jar { manifest { attributes 'Main-Class': 'HelloKotlinKt' } from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } } 

Lo que es más, Intellij parece no reconocer el directory src / main / kotlin como directory fuente (no está marcado en azul) …

 sourceSets { main.java.srcDirs += 'src/main/kotlin' } 

La documentation y los resources útiles se pueden encontrar aquí y allá .

¿Por qué no se ejecuta mi aplicación?

El Jar que estás creando no incluye el time de ejecución de kotlin ya que Gradle solo buildá un Jar con tus files de class. Veo que está utilizando el complemento de la application por lo que hacer $ gradle run o crear una distribución y ejecutar a través del script de shell proporcionado debería funcionar bien. Si desea enviar kotlin con su jar, tendrá que crear un flask gordo.

¿Por qué IDEA no reconoce el directory de origen?

Sospecho que esto se debe al hecho de que no ha aplicado el plugin idea en su file de compilation. No he trabajado con Kotlin, pero con otros idiomas es necesario para configurar correctamente el espacio de trabajo.

Acabo de hacer eso dice la documentation, y todo funciona bien. "Las fonts de Kotlin se pueden combinar con fonts Java en la misma carpeta o en diferentes carpetas. La convención pnetworkingeterminada es usar diferentes carpetas:

 project - src - main (root) - kotlin - java 

La propiedad correspondiente de sourceSets se debe actualizar si no se usa la convención pnetworkingeterminada:

 sourceSets { main.kotlin.srcDirs += 'src/main/myKotlin' main.java.srcDirs += 'src/main/myJava' } 

Espero que te ayude

  • Cómo pasar object personalizado a través de bash en kotlin
  • ¿Cómo enlazar el evento onClick de la vista usando Android Binding Library y Kotlin?
  • Operaciones de transmisión diferida y reference no resuelta para transmisión ()
  • ¿Cómo mostrar solo día y mes en el cuadro de dialog selector de date en Kotlin (Android)?
  • Corutinas de testing unitaria en el hilo de UI
  • Devuelve el valor de la condición if / else, pero también ejecuta el código
  • Tengo que reiniciar IDE para ejecutar testings
  • Spring Boot: cambio de significado de marcador de position de propiedad
  • Kotlin y Dagger2
  • ¿Hay alguna manera de crear una matriz no nula a partir de un range?
  • Handler () postDelay no está disponible para este código de Kotlin, ¿cómo solucionarlo?