Kotlin应用程序与Gradle应用程序插件

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

 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) { println("Hello, World!") } } 

根据这个博客文章,我应该可以使用这种方式的应用程序插件。

当我运行gradle run时,需要更改哪些application插件才能运行我的主函数?

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

1)把主要的东西放到companion object并使其成为JvmStatic

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

2)改变你的class object – 比你多或少有一个单身class ,使其JvmStatic

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

3)在课堂外放置主体

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