带有Gradle应用程序插件的Kotlin应用程序

时间:2017-12-12 05:58:28

标签: gradle jvm kotlin build.gradle

我正在尝试使用kotlingradle和gradle application插件创建一个简单的HelloWorld应用程序。当我使用以下设置运行它时,我收到以下错误:

Error: Main method is not static in class com.petarkolaric.helloworld.Main, please define the main method as:
public static void main(String[] args)

我的build.gradle

group 'helloworld'
version '1.0-SNAPSHOT'

buildscript {
    ext.kotlin_version = '1.2.0'

    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

apply plugin: 'kotlin'
apply plugin: 'application'

mainClassName = "com.petarkolaric.helloworld.Main"

repositories {
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

我的src/main/kotlin/com/petarkolaric/helloworld/Main.kt

package com.petarkolaric.helloworld

class Main {

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

根据this blog post,我应该能够以这种方式使用应用程序插件。

运行application时,我需要更改哪些内容才允许gradle run插件运行我的主要功能?

1 个答案:

答案 0 :(得分:10)

如错误所示,您的主要方法不是静态的。您有以下选择:

1)将主要内容放入companion object并将其设为JvmStatic

class Main {
    companion object {
        @JvmStatic
        fun main(args : Array<String>) {
            println("Hello, World!")
        }
    }
}

2)将您的class更改为object - 或多或少拥有单身class并将其设为JvmStatic

object Main {
    @JvmStatic
    fun main(args : Array<String>) {
        println("Hello, World!")
    }
}

3)将主要课程放在课堂外

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