运行 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 到底是什么东西?

在'fat jar'中指定java代理?

[转] maven打包可运行的fat-jar的简单方法

.bat批处理文件怎么写语句来运行.jar文件

如何使用fat-jar打包jar文件啊

如何使用来自 Ktor Kotlin/Java 应用程序的 gradle 构建有效的 JAR 文件