我想使用 maven-assembly-plugin 創建我的 Kotlin 代碼庫的可執行 jar。在 Kotlin 中,主類不一定是類的一部分,但插件想要聽到一個類。
如果我確實創建了一個主類,那么就沒有問題。假設我有一個主要課程:
我的應用程式.kt
package com.my.application
class MyApplication {
companion object {
@JvmStatic
fun main(args: Array<String>) {
.. do stuff here ..
}
}
}
我還配置了插件:
pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<archive>
<manifest>
<mainClass>
com.my.application.MyApplication
</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
</plugin>
以上作業。我可以成功執行jar。然而,在 Kotlin 中沒有必要讓類與伴生物件,然后是注解。我可以輸入:
我的應用程式.kt
import com.my.application
fun main(args: Array<String>) {
.. do stuff here ..
}
但是,如果我然后執行該 jar,則會出現例外:
Error: Could not find or load main class com.my.application.MyApplication
Caused by: java.lang.ClassNotFoundException: com.my.application.MyApplication
我怎樣才能使這項作業?
uj5u.com熱心網友回復:
Kotlin 將隱式編譯為從后綴為 Kt 的檔案名派生的類。在你的情況下,結果是com.my.application.MyApplicationKt
https://kotlinlang.org/docs/java-to-kotlin-interop.html#package-level-functions
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/357290.html
