我正在尝试使用 kotlin
、gradle
和 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我应该可以这样使用应用程序插件。
当我运行 gradle run
时,我需要更改什么以允许 application
插件运行我的 main 函数?
最佳答案
正如错误所说,您的主要方法不是静态的。您有以下选择:
1) 把main放到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) 将main放在类外
fun main(args : Array<String>) {
println("Hello, World!")
}
class Main {
}
关于gradle - 带有 Gradle 应用程序插件的 Kotlin 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47766179/