Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在部署Ktor+;暴露的后端?_Java_Kotlin_Jar_Ktor_Kotlin Exposed - Fatal编程技术网

Java 如何在部署Ktor+;暴露的后端?

Java 如何在部署Ktor+;暴露的后端?,java,kotlin,jar,ktor,kotlin-exposed,Java,Kotlin,Jar,Ktor,Kotlin Exposed,这是我的shadowJar任务 shadowJar { archiveName "server.jar" mainClassName = "myapp.ApplicationKt" manifest { attributes( 'Class-Path': project.configurations.compile.collect { it.getName() }.join(' ') ) }

这是我的shadowJar任务

shadowJar {
    archiveName "server.jar"
    mainClassName = "myapp.ApplicationKt"
    manifest {
        attributes(
                'Class-Path': project.configurations.compile.collect { it.getName() }.join(' ')
        )
    }
    minimize {
//        exclude(dependency('.*:.*:.*'))
    }
    from sourceSets.main.output
}
注意注释的exclude行删除了最小化的任何依赖项(有效地禁用了shadowJar)。当我取消对此的注释时,结果jar就会工作。然而,shadowJar的最小化在运行时实际加载的切块似乎存在一些有问题的依赖关系:

以下是我不断发现的错误:

2020-02-09 16:39:01.843 [main] INFO  ktor.application - No ktor.deployment.watch patterns specified, automatic reload is not active
Exception in thread "main" java.util.ServiceConfigurationError: org.jetbrains.exposed.sql.DatabaseConnectionAutoRegistration: Provider org.jetbrains.exposed.jdbc.ExposedConnectionImpl not found
我相信问题就在这附近。它无法在运行时找到数据库驱动程序


我尝试过显而易见的方法:排除暴露的sql、mysql连接器java依赖项,但没有任何效果。

您是否也重新打包META-INF文件夹或只是类文件?不,还没有这样做(上面的shadowJar任务几乎就是我现在正在做的全部工作)。添加META-INF处理会有帮助吗?你能提供(或链接到)一个这样做的例子吗?我已经清理了在Github代码深度中可以找到的所有内容,使用shadowJar搜索所有repo,但在任何地方都没有看到不同的处理方式(它们基本上都没有minimize()),尝试将
mergeServiceFiles()
添加到
shadowJar
任务中:`shadowJar{mergeServiceFiles()}`尝试了一下,得到了与上面相同的错误(
org.jetbrains.exposed.sql.DatabaseConnectionAutoRegistration:Provider org.jetbrains.exposed.jdbc.ExposedConnectionImpl not found
)。还有其他想法吗?你将哪些依赖项打包到shadowJar中?你是否也重新打包META-INF文件夹或只是类文件?没有,还没有(上面的shadowJar任务几乎就是我现在正在做的所有事情)。添加META-INF处理会有帮助吗?你能提供(或链接到)一个这样做的例子吗?我已经在Github代码的深处找到了所有我能找到的东西,使用shadowJar搜索所有repo,在任何地方都没有看到不同的处理方式(它们基本上都没有minimize())尝试将
mergeServiceFiles()
添加到您的
shadowJar
任务中:`shadowJar{mergeServiceFiles()}`尝试了,得到了与上面相同的错误(
org.jetbrains.exposed.sql.DatabaseConnectionAutoRegistration:Provider org.jetbrains.exposed.jdbc.ExposedConnectionImpl未找到
…)还有其他想法吗?您将哪些依赖项打包到shadowJar中?
at java.util.ServiceLoader.fail(ServiceLoader.java:239)
        at java.util.ServiceLoader.access$300(ServiceLoader.java:185)
        at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:372)
        at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
        at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
        at kotlin.collections.CollectionsKt___CollectionsKt.firstOrNull(_Collections.kt:224)
        at org.jetbrains.exposed.sql.Database.<clinit>(Database.kt:64)
        at myapp.DB.init(DB.kt:23)
        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.instantiateAndConfigureApplication(ApplicationEngineEnvironmentReloading.kt:293)
        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.createApplication(ApplicationEngineEnvironmentReloading.kt:137)
        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.start(ApplicationEngineEnvironmentReloading.kt:257)
        at io.ktor.server.netty.NettyApplicationEngine.start(NettyApplicationEngine.kt:126)
        at myApp.ApplicationKt.main(Application.kt:35)
        at kotlin.coroutines.intrinsics.IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$1.invokeSuspend(IntrinsicsJvm.kt:199)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:114)
        at kotlin.coroutines.jvm.internal.RunSuspendKt.runSuspend(RunSuspend.kt:19)
        Database.connect(
            driver = "com.mysql.cj.jdbc.Driver",