Skip to content

Crash on startup with 1.3.3 for kotlin app not using kotlinx-coroutines-reactor #583

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
gotson opened this issue Apr 19, 2020 · 2 comments
Closed
Labels
bug Something isn't working

Comments

@gotson
Copy link

gotson commented Apr 19, 2020

Describe the bug
After upgrading from 1.3.2 to 1.3.3 the application crashes at startup.

java.lang.IllegalStateException: Unable to load cache item
	at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:79) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.cglib.core.internal.LoadingCache.get(LoadingCache.java:34) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:134) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:319) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.cglib.proxy.Enhancer.createHelper(Enhancer.java:569) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.cglib.proxy.Enhancer.createClass(Enhancer.java:416) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassEnhancer.createClass(ConfigurationClassEnhancer.java:137) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassEnhancer.enhance(ConfigurationClassEnhancer.java:109) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:423) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanFactory(ConfigurationClassPostProcessor.java:257) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:286) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:130) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:706) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:532) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) [spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) [spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
	at org.gotson.komga.ApplicationKt.main(Application.kt:17) [main/:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_222]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_222]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_222]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_222]
	at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) [spring-boot-devtools-2.2.6.RELEASE.jar:2.2.6.RELEASE]
Caused by: java.lang.NoClassDefFoundError: kotlinx/coroutines/flow/Flow
	at org.springdoc.kotlin.SpringDocKotlinConfiguration.<clinit>(SpringDocKotlinConfiguration.java:41) ~[springdoc-openapi-kotlin-1.3.3.jar:1.3.3]
	at java.lang.Class.forName0(Native Method) ~[na:1.8.0_222]
	at java.lang.Class.forName(Class.java:348) ~[na:1.8.0_222]
	at org.springframework.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:571) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:363) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.cglib.proxy.Enhancer.generate(Enhancer.java:582) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:110) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:108) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_222]
	at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	... 25 common frames omitted
Caused by: java.lang.ClassNotFoundException: kotlinx.coroutines.flow.Flow
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_222]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_222]
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) ~[na:1.8.0_222]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_222]
	... 36 common frames omitted

It seems to be related to the fix for #560

Steps to reproduce the behavior:

  • What version of spring-boot you are using? 2.2.6.RELEASE
  • What modules and versions of springdoc-openapi are you using?
org.springdoc:springdoc-openapi-ui:1.3.3
org.springdoc:springdoc-openapi-data-rest:1.3.3
org.springdoc:springdoc-openapi-security:1.3.3
org.springdoc:springdoc-openapi-kotlin:1.3.3
@gotson
Copy link
Author

gotson commented Apr 19, 2020

Removing org.springdoc:springdoc-openapi-kotlin:1.3.3 seems to solve the problem.

My project is in Kotlin, but i don't use coroutines.

I think it's mostly a documentation issue. The website mentions this about the kotlin module:

For a project that uses Kotlin, you should add the following dependency, together with the springdoc-openapi-ui dependency: This dependency improves the support of Kotlin types:

Which is slightly incorrect, because the project requires a dependency on org.jetbrains.kotlinx:kotlinx-coroutines-reactor, and you can definitely use Kotlin without that.

I would suggest clarifying the content and requirements of the Kotlin module.

@bnasslahsen bnasslahsen changed the title Crash at startup with 1.3.3 Crash on startup with 1.3.3 for kotlin app not using reactor Apr 19, 2020
@bnasslahsen bnasslahsen changed the title Crash on startup with 1.3.3 for kotlin app not using reactor Crash on startup with 1.3.3 for kotlin app not using kotlinx-coroutines-reactor Apr 19, 2020
@bnasslahsen
Copy link
Collaborator

The issue you are facing is linked to kotlinx-coroutines-reactor, which exists in different packages from kotlin.coroutines.

You app, doesn't depend on reactor and the springdoc-kotlin module should support both apps using reactor or not.
This issue will be fixed today on v1.3.4.

@bnasslahsen bnasslahsen added the bug Something isn't working label Jan 10, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants