使用Kotlin配置Gradle

Fil*_*mek 18 java intellij-idea kotlin

我正在尝试使用kotlin和gradle,但我无法使用Intellij Idea 15成功创建项目.

我已经创建了有两个模块简单的项目hello-javahello-kotlin.

hello-java 是普通的java项目,它正在编译和运行完美.

hello-kotlin是简单的kotin模块,只有一个*.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"
}
Run Code Online (Sandbox Code Playgroud)

HelloKotlin.kt

fun main(args: Array<String>) {
    println("Hello, Kotlin!")
}
Run Code Online (Sandbox Code Playgroud)

主模块settings.gradle

include 'hello-java'
include 'hello-kotlin'
Run Code Online (Sandbox Code Playgroud)

运行时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
Run Code Online (Sandbox Code Playgroud)

更重要的是,Intellij似乎没有将src/main/kotlin目录识别为源目录(它没有标记为蓝色),并且在编辑HelloKotlin.kt文件时我无法使用自动完成功能.

这是我在Intellij项目窗口中的项目结构

在此输入图像描述

我已经尝试使用Intellij选项配置模块与Kotlin(Tools->Kotlin->Configure project with Kotlin),但它给我错误"所有模块与kotlin文件配置"

帮我stackoverflow,你是我唯一的帮助.

aga*_*aga 12

当运行gradlew clean build时,所有项目都已成功编译,但是在运行java -jar hello-kotlin-1.0-SNAPSHOT.jar时出现以下错误...

jar {
    manifest {
        attributes 'Main-Class': 'HelloKotlinKt'
    }

    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
Run Code Online (Sandbox Code Playgroud)

更重要的是,Intellij似乎没有将src/main/kotlin目录识别为源目录(它没有标记为蓝色)......

sourceSets {
    main.java.srcDirs += 'src/main/kotlin'
}
Run Code Online (Sandbox Code Playgroud)

文档和有用的资源,可以发现这里那里.