运行 fat jar 的 ktor 抛出 java.lang.UnsupportedOperationException::Kotlin 反射中尚不支持包和文件外观
Posted
技术标签:
【中文标题】运行 fat jar 的 ktor 抛出 java.lang.UnsupportedOperationException::Kotlin 反射中尚不支持包和文件外观【英文标题】:ktor running fat jar throws java.lang.UnsupportedOperationException::Packages and file facades are not yet supported in Kotlin reflection 【发布时间】:2019-06-14 10:03:57 【问题描述】:下面是从 IDE 正常运行的基本 ktor 文件,但我使用“mvn install”创建了一个胖 jar 文件,运行它会引发以下异常:
线程“main”java.lang.UnsupportedOperationException 中的异常:Kotlin 反射尚不支持包和文件外观。同时请使用Java反射检查这个类:class com.tech.ApplicationKt
fun main(args: Array<String>)
embeddedServer(Netty, 8080)
routing
get("/demo")
call.respondText("Hello demo")
.start(wait = true)
我尝试在 Java 11 和 8 上执行 jar,但遇到了同样的异常。
【问题讨论】:
您使用的是什么版本的 ktor?甚至可以向我们展示您的构建。 【参考方案1】:我刚刚按照 ktor.io 上的官方指南进行了尝试,以使用 maven 进行设置。
之后我关注https://ktor.io/servers/deploy/packing/fatjar.html#fat-jar-maven 进行 jar 编译。
我遇到了 2 个问题:
-
我首先尝试了 IntelliJ Maven 侧栏中的
install:install
任务,但实际上您必须使用生命周期方法 install
或仅使用 package
。
我必须调整 maven 程序集插件的 mainClass
属性以匹配我自己的属性,例如 path.to.your.package.ServerKt
或任何您调用的文件。
一旦我修复了这两个,一切正常。
如果您仍有问题,请向我们展示您的构建文件。
【讨论】:
在maven组装插件中调整mainClass后工作正常。感谢您指出这一点。以上是关于运行 fat jar 的 ktor 抛出 java.lang.UnsupportedOperationException::Kotlin 反射中尚不支持包和文件外观的主要内容,如果未能解决你的问题,请参考以下文章
Executable Jar/Uber Jar/Shade Jar/Shadow Jar/Fat Jar 到底是什么东西?