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 evitar que kotlin.Unit object sea eliminado por Proguard
  • ¿Puede una interfaz de kotlin almacenar en caching un valor?
  • ¿Qué significa una firma de function de Kotlin con T. ()?
  • En Kotlin Lenguaje de progtwigción importancia de varargs en términos de usos
  • Android: ¿cómo lograr setOnClickListener en Kotlin?
  • ¿Qué significa el código "val jsonObj = json como JsonObject" en Kotlin?
  • Uso de un tipo genérico de interfaz en el método
  • @Autowinetworking no funciona en el parámetro de método
  • Error de statement de function al comstackr con Kotlin 12
  • Tipo de security con campos opcionales en una class de datos para JSON
  • Funciones de extensión LocalDateTime y Smart Casting