ktorio / ktor

Framework for quickly creating connected applications in Kotlin with minimal effort
https://ktor.io
Apache License 2.0
12.93k stars 1.05k forks source link

ClassNotFoundException: Module function cannot be found in v1.3.2 #1823

Closed rachid-o closed 4 years ago

rachid-o commented 4 years ago

Ktor Version and Engine Used (client or server and name) Ktor server version 1.3.2 running on: openjdk version "1.8.0-adoptopenjdk"

Describe the bug The same problem as reported in: #1132

To Reproduce Steps to reproduce the behavior: I build a fatJar with: ./gradlew clean shadowJar When running with: java -jar build/libs/project-0.0.1.jar I see:

Exception in thread "main" java.lang.ClassNotFoundException: Module function cannot be found for the fully qualified name 'server.GameApplicationKt.main'
    at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.executeModuleFunction(ApplicationEngineEnvironmentReloading.kt:357)
    at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.access$executeModuleFunction(ApplicationEngineEnvironmentReloading.kt:33)
    at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$instantiateAndConfigureApplication$1$$special$$inlined$forEach$lambda$1.invoke(ApplicationEngineEnvironmentReloading.kt:275)
    at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$instantiateAndConfigureApplication$1$$special$$inlined$forEach$lambda$1.invoke(ApplicationEngineEnvironmentReloading.kt:33)
    at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.avoidingDoubleStartupFor(ApplicationEngineEnvironmentReloading.kt:310)
    at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.access$avoidingDoubleStartupFor(ApplicationEngineEnvironmentReloading.kt:33)
    at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$instantiateAndConfigureApplication$1.invoke(ApplicationEngineEnvironmentReloading.kt:274)
    at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$instantiateAndConfigureApplication$1.invoke(ApplicationEngineEnvironmentReloading.kt:33)
    at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.avoidingDoubleStartup(ApplicationEngineEnvironmentReloading.kt:290)
    at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.instantiateAndConfigureApplication(ApplicationEngineEnvironmentReloading.kt:272)
    at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.createApplication(ApplicationEngineEnvironmentReloading.kt:125)
    at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.start(ApplicationEngineEnvironmentReloading.kt:245)
    at io.ktor.server.netty.NettyApplicationEngine.start(NettyApplicationEngine.kt:126)
    at io.ktor.server.netty.EngineMain.main(EngineMain.kt:26)

When downgrading ktor to version 1.2.0 I see the same problem. When downgrading ktor to version 1.1.5 I do not see the problem. So everything is working fine in version 1.1.5.

rachid-o commented 4 years ago

The problem was caused during upgrading. I upgraded from 1.0.0 to 1.3.2. I only read the migration docs of 1.0.0 and higher, but I think I was using 1.0.0-beta-1.

Upgrading itself went fine, but later I changed the main entry point in code from Application.main() to Application.module(). I didn't update application.conf accordingly, but that didn't seem to be a problem when running from IntelliJ. Now I updated application.conf and running the fatJar works OK!