我刚刚开始使用Kotlin,在理解收件箱文件的工作方式方面遇到了一些问题.我有两个文件:
hello.kt
class HelloWorld {
public fun speak() {
println("hello world")
}
}
main.kt
fun main() {
val hello = HelloWorld()
hello.speak()
}
我的项目 struct 是:
root
|-hello.kt
|-main.kt
我的目的是构建Kotlin应用程序,将其类分布在肮脏的收件箱文件中. 我用
kotlinc hello.kt -d hello.jar
kotlinc main.kt -cp hello.jar -include-runtime -d main.jar
来构建收件箱文件.这两个命令执行时没有任何错误.我无法理解如何执行应用程序.
到目前为止我已经try 过了
java -cp hello.jar -jar main.jar
运行应用程序,但我得到这个错误:
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
at MainKt.main(main.kt:2)
at MainKt.main(main.kt)
Caused by: java.lang.ClassNotFoundException: HelloWorld
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
... 2 more
我还try 遵循this question的答案,这显示了同样的问题,但正在运行
java -cp main.jar:hello.jar MainKt
给我以下错误
Error: Could not find or load main class MainKt
Caused by: java.lang.ClassNotFoundException: MainKt
总体而言,我对Kotlin和Java很陌生,但我找不到解决方案.