Приложение Kotlin с плагином приложения Gradle

Я пытаюсь создать простое приложение HelloWorld, используя kotlin , gradle и плагин application gradle. Когда я запускаю его с настройкой ниже, я получаю следующую ошибку:

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

My 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!") } } 

Согласно этому сообщению в блоге, я должен использовать этот плагин приложения.

Что мне нужно изменить, чтобы позволить плагину application запускать мою основную функцию, когда я запускаю запуск gradle run ?

Solutions Collecting From Web of "Приложение Kotlin с плагином приложения Gradle"

Как говорит ошибка, ваш основной метод не является статичным. У вас есть следующие варианты:

1) Поместите основной companion object в 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 { }