Skip to content
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

IllegalAccessError: class ModelResolver tried to access protected method AnnotatedMember.getAllAnnotations() #4212

Closed
CidTori opened this issue Jul 14, 2022 · 4 comments
Assignees

Comments

@CidTori
Copy link

CidTori commented Jul 14, 2022

In my project I have swagger-core:2.2.0 and jackson-databind:2.8.11.3, and I have an exception with the following root cause:

Caused by: java.lang.IllegalAccessError: class io.swagger.v3.core.jackson.ModelResolver tried to access protected method 'com.fasterxml.jackson.databind.introspect.AnnotationMap com.fasterxml.jackson.databind.introspect.AnnotatedMember.getAllAnnotations()' (io.swagger.v3.core.jackson.ModelResolver and com.fasterxml.jackson.databind.introspect.AnnotatedMember are in unnamed module of loader 'app')
	at io.swagger.v3.core.jackson.ModelResolver.resolve(ModelResolver.java:579)
	at org.springdoc.core.converters.PageableOpenAPIConverter.resolve(PageableOpenAPIConverter.java:91)
	at org.springdoc.core.converters.AdditionalModelsConverter.resolve(AdditionalModelsConverter.java:138)
	at org.springdoc.core.converters.PropertyCustomizingConverter.resolve(PropertyCustomizingConverter.java:58)
	at org.springdoc.core.converters.FileSupportConverter.resolve(FileSupportConverter.java:66)
	at org.springdoc.core.converters.ResponseSupportConverter.resolve(ResponseSupportConverter.java:77)
	at org.springdoc.core.converters.SchemaPropertyDeprecatingConverter.resolve(SchemaPropertyDeprecatingConverter.java:58)
	at org.springdoc.core.converters.PolymorphicModelConverter.resolve(PolymorphicModelConverter.java:63)
	at io.swagger.v3.core.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:97)
	at io.swagger.v3.core.jackson.ModelResolver.resolve(ModelResolver.java:440)
	at org.springdoc.core.converters.PageableOpenAPIConverter.resolve(PageableOpenAPIConverter.java:91)
	at org.springdoc.core.converters.AdditionalModelsConverter.resolve(AdditionalModelsConverter.java:138)
	at org.springdoc.core.converters.PropertyCustomizingConverter.resolve(PropertyCustomizingConverter.java:58)
	at org.springdoc.core.converters.FileSupportConverter.resolve(FileSupportConverter.java:66)
	at org.springdoc.core.converters.ResponseSupportConverter.resolve(ResponseSupportConverter.java:77)
	at org.springdoc.core.converters.SchemaPropertyDeprecatingConverter.resolve(SchemaPropertyDeprecatingConverter.java:58)
	at org.springdoc.core.converters.PolymorphicModelConverter.resolve(PolymorphicModelConverter.java:63)
	at io.swagger.v3.core.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:97)
	at org.springdoc.core.converters.ResponseSupportConverter.resolve(ResponseSupportConverter.java:69)
	at org.springdoc.core.converters.SchemaPropertyDeprecatingConverter.resolve(SchemaPropertyDeprecatingConverter.java:58)
	at org.springdoc.core.converters.PolymorphicModelConverter.resolve(PolymorphicModelConverter.java:63)
	at io.swagger.v3.core.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:97)
	at io.swagger.v3.core.converter.ModelConverters.resolveAsResolvedSchema(ModelConverters.java:110)
	at org.springdoc.core.SpringDocAnnotationsUtils.extractSchema(SpringDocAnnotationsUtils.java:120)
	at org.springdoc.core.GenericResponseService.calculateSchema(GenericResponseService.java:500)
	at org.springdoc.core.GenericResponseService.buildContent(GenericResponseService.java:459)
	at org.springdoc.core.GenericResponseService.buildContent(GenericResponseService.java:440)
	at org.springdoc.core.GenericResponseService.buildApiResponses(GenericResponseService.java:532)
	at org.springdoc.core.GenericResponseService.buildApiResponses(GenericResponseService.java:394)
	at org.springdoc.core.GenericResponseService.build(GenericResponseService.java:158)
	at org.springdoc.api.AbstractOpenApiResource.calculatePath(AbstractOpenApiResource.java:458)
	at org.springdoc.api.AbstractOpenApiResource.calculatePath(AbstractOpenApiResource.java:616)
	at org.springdoc.webmvc.api.OpenApiResource.lambda$calculatePath$10(OpenApiResource.java:228)
	at java.base/java.util.Optional.ifPresent(Optional.java:183)
	at org.springdoc.webmvc.api.OpenApiResource.calculatePath(OpenApiResource.java:210)
	at org.springdoc.webmvc.api.OpenApiResource.lambda$getPaths$2(OpenApiResource.java:180)
	at java.base/java.util.Optional.ifPresent(Optional.java:183)
	at org.springdoc.webmvc.api.OpenApiResource.getPaths(OpenApiResource.java:159)
	at org.springdoc.api.AbstractOpenApiResource.getOpenApi(AbstractOpenApiResource.java:320)
	at org.springdoc.webmvc.api.OpenApiResource.openapiJson(OpenApiResource.java:134)
	at org.springdoc.webmvc.api.OpenApiWebMvcResource.openapiJson(OpenApiWebMvcResource.java:113)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:854)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:765)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
	... 97 common frames omitted

Indeed, we can see here, line 579, that ModelResolver calls getAllAnnotations, which is protected until jackson-databind:2.9 I think.
However, the README says that swagger-core is compatible with "Jackson 2.4.5 or greater".

@bedaHovorka
Copy link

bedaHovorka commented Jul 18, 2022

It seems, that swagger-core version - 2.2.1 has same problem:

BTW - There are two null checks - first in swagger using protected method. And second in jackson. I mean, that call annotations() only is sufficient solution.

@bhumi7383
Copy link

Hi there,
I am facing same error with spring boot 1.4.4 and springdoc-openapi-ui.

@frantuma
Copy link
Member

Thanks for reporting this, should be fixed in #4214 by reverting to deprecated AnnotatedMember.annotations()

@wolfch-elsevier
Copy link

wolfch-elsevier commented Jul 28, 2022

So which Maven release do I need to specify to get this fix?
I found it:

<dependency>
    <groupId>io.swagger.core.v3</groupId>
    <artifactId>swagger-core</artifactId>
    <version>2.2.2</version>
</dependency>

Although not yet findable on Central, it can still be pulled.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants