从gradle任务运行kotlin应用程序的正确方法

时间:2016-09-19 14:53:27

标签: gradle kotlin

我有简单的脚本

package com.lapots.game.journey.ims.example


fun main(args: Array<String>) {
    println("Hello, world!")
}

这是gradle任务

task runExample(type: JavaExec) {
    main ='com.lapots.game.journey.ims.example.Example'
    classpath = sourceSets.main.runtimeClasspath
}

但是当我尝试运行任务gradle runExample时,我收到错误

Error: Could not find or load main class com.lapots.game.journey.ims.example.Example

运行应用程序的正确方法是什么?

6 个答案:

答案 0 :(得分:11)

感谢@JaysonMinard提供的链接how to run compiled class file in Kotlin? main

@file:JvmName("Example")

package com.lapots.game.journey.ims.example


fun main(args: Array<String>) {
    print("executable!")
}

task

task runExample(type: JavaExec) {
    main = 'com.lapots.game.journey.ims.example.Example'
    classpath = sourceSets.main.runtimeClasspath
}

做了这个伎俩

答案 1 :(得分:6)

您也可以使用gradle应用程序插件。

// example.kt
package com.lapots.game.journey.ims.example

fun main(args: Array<String>) {
    print("executable!")
}

将此添加到您的build.gradle

// build.gradle
apply plugin "application"
mainClassName = 'com.lapots.game.journey.ims.example.ExampleKt'

然后按如下方式运行您的应用程序。

./gradlew run

答案 2 :(得分:3)

如果您正在使用Kotlin构建文件build.gradle.kts,则需要执行

apply {
    plugin("kotlin")
    plugin("application")
}    

configure<ApplicationPluginConvention> {
    mainClassName = "my.cool.App"
}

如果您使用application块应用plugins {}插件,则可以使其更简单:

plugins {
    application
}

application {
    mainClassName = "my.cool.App"
}

有关详细信息,请参阅https://github.com/gradle/kotlin-dsl/blob/master/doc/getting-started/Configuring-Plugins.md

答案 3 :(得分:3)

我从@lapots答案中找到了另一种方法。

在您的example.kt中:

@file:JvmName("Example")

package your.organization.example

fun main(string: Array<String>) {
    println("Yay! I'm running!")
}

然后在您的build.gradle.kts

plugins {
    kotlin("jvm") version "1.3.72"
    application
}

application {
    mainClassName = "your.organization.example.Example"
}

答案 4 :(得分:3)

build.gradle.kts个用户

主文件:

package com.foo.game.journey.ims.example


fun main(args: Array<String>) {
    println("Hello, world!")
}

build.gradle.kts文件:

plugins {
    application
    kotlin("jvm") version "1.3.72" // <-- your kotlin version here
}

application {
    mainClassName = "com.lapots.game.journey.ims.example.ExampleKt"
}

...

并使用以下命令运行:

./gradlew run

答案 5 :(得分:0)

可以在不添加包名的情况下进行。运行带有绿色播放图标的应用程序,它应该在它运行的命令的末尾显示主类名称。 enter image description here

build.gradle 中添加 className 和 application 像这样

plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.5.10'
    id 'application'
}

mainClassName = 'AppKt'
...

现在您可以执行 ./gradlew run 并传递参数还添加 --args='foo --bar'