在JAR中打包Kotlin.kt类

在JAR中打包Kotlin.kt类,jar,jvm,package,kotlin,manifest,Jar,Jvm,Package,Kotlin,Manifest,如何将HelloWorld.kt构建为JAR,使其运行 thufir@dur:~/kotlin$ thufir@dur:~/kotlin$ kotlinc HelloWorld.kt --include-runtime -d HelloWorld.jar error: invalid argument: --include-runtime info: use -help for more information thufir@dur:~/kotlin$ thufir@dur:~/kotlin

如何将
HelloWorld.kt
构建为
JAR
,使其运行

thufir@dur:~/kotlin$ 
thufir@dur:~/kotlin$ kotlinc HelloWorld.kt --include-runtime -d HelloWorld.jar
error: invalid argument: --include-runtime
info: use -help for more information
thufir@dur:~/kotlin$ 
thufir@dur:~/kotlin$ 
thufir@dur:~/kotlin$ kotlinc HelloWorld.kt -d HelloWorld.jar
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$ java -jar HelloWorld.jar 
no main manifest attribute, in HelloWorld.jar
thufir@dur:~/kotlin$ 
thufir@dur:~/kotlin$ cat HelloWorld.kt 
import kotlin.jvm.JvmStatic

object HelloWorld {
    @JvmStatic
    public fun main(args: Array<String>) {
        println("Hello, world!" + args[0])
    }
}
thufir@dur:~/kotlin$ 
thufir@dur:~/kotlin$
thufir@dur:~/kotlin$kotlinc HelloWorld.kt——包含运行时-d HelloWorld.jar
错误:无效参数:-包含运行时
信息:有关详细信息,请使用-help
thufir@dur:~/kotlin$
thufir@dur:~/kotlin$
thufir@dur:~/kotlin$kotlinc HelloWorld.kt-d HelloWorld.jar
警告:发生了非法的反射访问操作
警告:com.intellij.util.text.StringFactory对构造函数java.lang.String(char[],boolean)的非法反射访问
警告:请考虑将此报告给COM.ITELLJ.U.T.Tr.Stand工厂的维护人员。
警告:使用--invalize access=warn以启用对进一步非法访问操作的警告
警告:所有非法访问操作将在未来版本中被拒绝
thufir@dur:~/kotlin$
thufir@dur:~/kotlin$java-jar HelloWorld.jar
HelloWorld.jar中没有主清单属性
thufir@dur:~/kotlin$
thufir@dur:~/kotlin$cat HelloWorld.kt
导入kotlin.jvm.JvmStatic
对象HelloWorld{
@JvmStatic
公共娱乐主机(args:Array){
println(“你好,世界!”+args[0])
}
}
thufir@dur:~/kotlin$
请注意,它被声明为类,因此该方法不在顶层(?)。还需要包含
kotlin
运行时


我是否需要使用
主类
为?

手动创建
MANIFEST.MF
,您应该使用像Gradle这样的构建工具来完成该任务


在本例中,创建了一个带有清单条目的Jar:

kotlin是否允许或使用shadowJar?这是构建和打包kotlin的奇怪方式吗?谢谢你的示例构建:)将不得不调整它,然后接受。当然你可以使用shadowJar,你会找到使用shadowJar的示例。我将问题的范围缩小为:并将检查你的答案。再次感谢:)