How do I declare main
as static so that the method will run as below (interactive):
thufir@dur:~/kotlin$
thufir@dur:~/kotlin$ kotlinc
Welcome to Kotlin version 1.1.51 (JRE 9.0.0.15+181)
Type :help for help, :quit for quit
>>>
>>> println("hello world");
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.intellij.util.text.StringFactory to constructor java.lang.String(char[],boolean)
WARNING: Please consider reporting this to the maintainers of com.intellij.util.text.StringFactory
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
hello world
>>>
>>> :quit
thufir@dur:~/kotlin$
compiling:
thufir@dur:~/kotlin$
thufir@dur:~/kotlin$ kotlinc Hello.kt
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.intellij.util.text.StringFactory to constructor java.lang.String(char[],boolean)
WARNING: Please consider reporting this to the maintainers of com.intellij.util.text.StringFactory
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
thufir@dur:~/kotlin$
thufir@dur:~/kotlin$ kotlin HelloKt
error: could not find or load main class HelloKt
thufir@dur:~/kotlin$
thufir@dur:~/kotlin$ kotlin Hello
error: 'main' method of class Hello is not static. Please ensure that 'main' is either a top level Kotlin function, a member function annotated with @JvmStatic, or a static Java method
thufir@dur:~/kotlin$
thufir@dur:~/kotlin$ cat Hello.kt
class Hello {
public fun main(args: Array<String>) {
println("Hello, world!" + args[0])
}
}
thufir@dur:~/kotlin$
see also:
In the tutorial, the method is declared on top level, not inside class Hello
. Alternately, you can write
import kotlin.jvm.JvmStatic
object Hello {
@JvmStatic
public fun main(args: Array<String>) {
println("Hello, world!" + args[0])
}
}