Вот моя задача 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
}
Обратите внимание, что закомментированная строка исключения исключает любую зависимость из минимизированной (эффективно отключает shadowJar). Когда я раскомментирую это, полученная банка работает. Однако, кажется, существует некоторая проблематичная c зависимость в том, что 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
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)
Я использую библиотеку базы данных Exposed с mysql драйвером. Вот как я подключаюсь к открытой базе данных
Database.connect(
driver = "com.mysql.cj.jdbc.Driver",
Я считаю, что проблема где-то в этом. Он не может найти драйвер базы данных во время выполнения.
Я пробовал очевидное: исключая открытые зависимости sql, mysql -connector- java безрезультатно.