generator-jhipster: NoSuchMethodError on startup when using WebFlux
Overview of the issue
On application startup multiple stacktraces are thrown, caused by initializing swagger objects with wrong parameters, leading to NoSuchMethodError.
| Required type | Provided |
|---|---|
| DocumentationContext | ParameterBuilder |
| GenericTypeNamingStrategy | DocumentationContext |
| OperationContext | GenericTypeNamingStrategy |
| int | OperationContext |
Stacktraces
:: JHipster π€ :: Running Spring Boot 2.2.7.RELEASE :: :: https://www.jhipster.tech ::2020-07-14 12:31:00.336 INFO 20256 β [ restartedMain] com.app.example.JhipsterExampleApp : Starting JhipsterExampleApp on ThinkpadX1 with PID 20256 (C:\Users\Samuel\develop\IntelliJProjects\example-jhipster\target\classes started by Samuel in C:\Users\Samuel\develop\IntelliJProjects\example-jhipster) 2020-07-14 12:31:00.338 DEBUG 20256 β [ restartedMain] com.app.example.JhipsterExampleApp : Running with Spring Boot v2.2.7.RELEASE, Spring v5.2.6.RELEASE 2020-07-14 12:31:00.338 INFO 20256 β [ restartedMain] com.app.example.JhipsterExampleApp : The following profiles are active: swagger,dev 2020-07-14 12:31:02.786 DEBUG 20256 β [ restartedMain] s.n.www.protocol.http.HttpURLConnection : sun.net.www.MessageHeader@ac1aa675 pairs: {GET /auth/realms/app-develop/.well-known/openid-configuration HTTP/1.1: null}{Accept: application/json, application/+json}{User-Agent: Java/11.0.2}{Host: auth.k8s.app.cloud}{Connection: keep-alive} 2020-07-14 12:31:02.827 DEBUG 20256 β [ restartedMain] s.n.www.protocol.http.HttpURLConnection : sun.net.www.MessageHeader@2d77ea416 pairs: {null: HTTP/1.1 200 OK}{Cache-Control: no-cache, must-revalidate, no-transform, no-store}{Content-Length: 2709}{Content-Type: application/json}{Date: Tue, 14 Jul 2020 10:31:02 GMT}{Vary: Accept-Encoding} 2020-07-14 12:31:03.236 DEBUG 20256 β [ restartedMain] i.m.c.u.i.logging.InternalLoggerFactory : Using SLF4J as the default logging framework 2020-07-14 12:31:03.457 DEBUG 20256 β [ restartedMain] c.n.example.config.AsyncConfiguration : Creating Async Task Executor 2020-07-14 12:31:03.465 DEBUG 20256 β [ restartedMain] c.n.e.config.DatabaseConfiguration : H2 database is available on port 18080 2020-07-14 12:31:03.567 DEBUG 20256 β [ restartedMain] c.n.e.config.LiquibaseConfiguration : Configuring Liquibase 2020-07-14 12:31:03.607 WARN 20256 β [-example-task-1] i.g.j.c.liquibase.AsyncSpringLiquibase : Starting Liquibase asynchronously, your database might not be ready at startup! 2020-07-14 12:31:04.221 DEBUG 20256 β [ restartedMain] s.n.www.protocol.http.HttpURLConnection : sun.net.www.MessageHeader@2f6fe53d5 pairs: {GET /auth/realms/app-develop/.well-known/openid-configuration HTTP/1.1: null}{Accept: application/json, application/+json}{User-Agent: Java/11.0.2}{Host: auth.k8s.app.cloud}{Connection: keep-alive} 2020-07-14 12:31:04.256 DEBUG 20256 β [ restartedMain] s.n.www.protocol.http.HttpURLConnection : sun.net.www.MessageHeader@68afac1e6 pairs: {null: HTTP/1.1 200 OK}{Cache-Control: no-cache, must-revalidate, no-transform, no-store}{Content-Length: 2709}{Content-Type: application/json}{Date: Tue, 14 Jul 2020 10:31:04 GMT}{Vary: Accept-Encoding} 2020-07-14 12:31:04.292 DEBUG 20256 β [ restartedMain] c.app.example.config.WebConfigurer : Registering CORS filter 2020-07-14 12:31:04.646 ERROR 20256 β [ restartedMain] s.d.s.web.scanners.ApiDescriptionReader : Skipping process path[/management/audits], method[getAll] as it has an error.
java.lang.NoSuchMethodError: springfox.documentation.spi.service.contexts.ParameterContext.<init>(Lspringfox/documentation/service/ResolvedMethodParameter;Lspringfox/documentation/builders/ParameterBuilder;Lspringfox/documentation/spi/service/contexts/DocumentationContext;Lspringfox/documentation/spi/schema/GenericTypeNamingStrategy;Lspringfox/documentation/spi/service/contexts/OperationContext;)V at io.github.jhipster.config.apidoc.PageableParameterBuilderPlugin.apply(PageableParameterBuilderPlugin.java:104) at springfox.documentation.spring.web.plugins.DocumentationPluginsManager.operation(DocumentationPluginsManager.java:144) at springfox.documentation.spring.web.readers.operation.ApiOperationReader.read(ApiOperationReader.java:72) at springfox.documentation.spring.web.scanners.CachingOperationReader.lambda$new$0(CachingOperationReader.java:43) at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1133) at springfox.documentation.spring.web.scanners.CachingOperationReader.read(CachingOperationReader.java:48) at springfox.documentation.spring.web.scanners.ApiDescriptionReader.read(ApiDescriptionReader.java:72) at springfox.documentation.spring.web.scanners.ApiListingScanner.scan(ApiListingScanner.java:169) at springfox.documentation.spring.web.scanners.ApiDocumentationScanner.scan(ApiDocumentationScanner.java:67) at springfox.documentation.spring.web.plugins.AbstractDocumentationPluginsBootstrapper.scanDocumentation(AbstractDocumentationPluginsBootstrapper.java:96) at springfox.documentation.spring.web.plugins.AbstractDocumentationPluginsBootstrapper.bootstrapDocumentationPlugins(AbstractDocumentationPluginsBootstrapper.java:82) at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.start(DocumentationPluginsBootstrapper.java:100) at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:182) at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:53) at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:360) at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:158) at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:122) at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:894) at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.finishRefresh(ReactiveWebServerApplicationContext.java:129) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553) at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) at com.app.example.JhipsterExampleApp.main(JhipsterExampleApp.java:63) 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.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
2020-07-14 12:31:04.656 ERROR 20256 β [ restartedMain] s.d.s.web.scanners.ApiDescriptionReader : Skipping process path[/management/audits], method[getByDates] as it has an error.
java.lang.NoSuchMethodError: springfox.documentation.spi.service.contexts.ParameterContext.<init>(Lspringfox/documentation/service/ResolvedMethodParameter;Lspringfox/documentation/builders/ParameterBuilder;Lspringfox/documentation/spi/service/contexts/DocumentationContext;Lspringfox/documentation/spi/schema/GenericTypeNamingStrategy;Lspringfox/documentation/spi/service/contexts/OperationContext;)V at io.github.jhipster.config.apidoc.PageableParameterBuilderPlugin.apply(PageableParameterBuilderPlugin.java:104) at springfox.documentation.spring.web.plugins.DocumentationPluginsManager.operation(DocumentationPluginsManager.java:144) at springfox.documentation.spring.web.readers.operation.ApiOperationReader.read(ApiOperationReader.java:72) at springfox.documentation.spring.web.scanners.CachingOperationReader.lambda$new$0(CachingOperationReader.java:43) at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1133) at springfox.documentation.spring.web.scanners.CachingOperationReader.read(CachingOperationReader.java:48) at springfox.documentation.spring.web.scanners.ApiDescriptionReader.read(ApiDescriptionReader.java:72) at springfox.documentation.spring.web.scanners.ApiListingScanner.scan(ApiListingScanner.java:169) at springfox.documentation.spring.web.scanners.ApiDocumentationScanner.scan(ApiDocumentationScanner.java:67) at springfox.documentation.spring.web.plugins.AbstractDocumentationPluginsBootstrapper.scanDocumentation(AbstractDocumentationPluginsBootstrapper.java:96) at springfox.documentation.spring.web.plugins.AbstractDocumentationPluginsBootstrapper.bootstrapDocumentationPlugins(AbstractDocumentationPluginsBootstrapper.java:82) at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.start(DocumentationPluginsBootstrapper.java:100) at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:182) at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:53) at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:360) at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:158) at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:122) at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:894) at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.finishRefresh(ReactiveWebServerApplicationContext.java:129) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553) at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) at com.app.example.JhipsterExampleApp.main(JhipsterExampleApp.java:63) 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.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
2020-07-14 12:31:04.865 ERROR 20256 β [ restartedMain] s.d.s.web.scanners.ApiDescriptionReader : Skipping process path[/api/users], method[getAllUsers] as it has an error.
java.lang.NoSuchMethodError: springfox.documentation.spi.service.contexts.ParameterContext.<init>(Lspringfox/documentation/service/ResolvedMethodParameter;Lspringfox/documentation/builders/ParameterBuilder;Lspringfox/documentation/spi/service/contexts/DocumentationContext;Lspringfox/documentation/spi/schema/GenericTypeNamingStrategy;Lspringfox/documentation/spi/service/contexts/OperationContext;)V at io.github.jhipster.config.apidoc.PageableParameterBuilderPlugin.apply(PageableParameterBuilderPlugin.java:104) at springfox.documentation.spring.web.plugins.DocumentationPluginsManager.operation(DocumentationPluginsManager.java:144) at springfox.documentation.spring.web.readers.operation.ApiOperationReader.read(ApiOperationReader.java:72) at springfox.documentation.spring.web.scanners.CachingOperationReader.lambda$new$0(CachingOperationReader.java:43) at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1133) at springfox.documentation.spring.web.scanners.CachingOperationReader.read(CachingOperationReader.java:48) at springfox.documentation.spring.web.scanners.ApiDescriptionReader.read(ApiDescriptionReader.java:72) at springfox.documentation.spring.web.scanners.ApiListingScanner.scan(ApiListingScanner.java:169) at springfox.documentation.spring.web.scanners.ApiDocumentationScanner.scan(ApiDocumentationScanner.java:67) at springfox.documentation.spring.web.plugins.AbstractDocumentationPluginsBootstrapper.scanDocumentation(AbstractDocumentationPluginsBootstrapper.java:96) at springfox.documentation.spring.web.plugins.AbstractDocumentationPluginsBootstrapper.bootstrapDocumentationPlugins(AbstractDocumentationPluginsBootstrapper.java:82) at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.start(DocumentationPluginsBootstrapper.java:100) at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:182) at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:53) at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:360) at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:158) at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:122) at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:894) at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.finishRefresh(ReactiveWebServerApplicationContext.java:129) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553) at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) at com.app.example.JhipsterExampleApp.main(JhipsterExampleApp.java:63) 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.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
2020-07-14 12:31:04.895 DEBUG 20256 β [ restartedMain] Validator : ERROR [ModelSpecification.spec] At least one type of specification is required 2020-07-14 12:31:05.375 INFO 20256 β [ restartedMain] com.app.example.JhipsterExampleApp : Started JhipsterExampleApp in 5.525 seconds (JVM running for 6.727)
Reproduce the error
Just start the newly created application using the provided template or these steps:
- Type: Monolithic application
- Spring WebFlux Beta: yes
- Basename: jhipster_example
- Package name: com.app.example
- JHipster Registry: no
- Authentication Type: OAuth 2.0 / OIDC
- Database: SQL
- Production Database: PostgreSQL
- Development Database: H2 with disk-based persistence
- Gradle or Maven for the backend: Maven
- Client Framework: Vue.js
- Additional test framework: Protractor
Suggest a Fix
I havenβt investigated that issue that far for now, but I am interested in using JHipster and webflux. When I am able to fix that issue Iβll provide a PR. Note: The used springfox version 3.0.0-SNAPSHOT can be changed to 3.0.0 as it was released today.
JHipster Version(s)
jhipster-example@0.0.0 C:\...l\develop\IntelliJProjects\example-jhipster
`-- generator-jhipster-vuejs@1.9.1
`-- generator-jhipster@6.10.1
JHipster configuration, a .yo-rc.json file generated in the root folder
.yo-rc.json file
{
"generator-jhipster": {
"promptValues": {
"packageName": "com.nexiles.example",
"nativeLanguage": "en"
},
"jhipsterVersion": "6.10.1",
"applicationType": "monolith",
"baseName": "jhipster_example",
"packageName": "com.app.example",
"packageFolder": "com/app/example",
"serverPort": "8080",
"authenticationType": "oauth2",
"cacheProvider": "no",
"websocket": false,
"databaseType": "sql",
"devDatabaseType": "h2Disk",
"prodDatabaseType": "postgresql",
"searchEngine": false,
"messageBroker": false,
"serviceDiscoveryType": false,
"buildTool": "maven",
"enableSwaggerCodegen": false,
"embeddableLaunchScript": false,
"useSass": true,
"clientPackageManager": "npm",
"clientFramework": "vue",
"clientTheme": "darkly",
"clientThemeVariant": "dark",
"creationTimestamp": 1594646219024,
"testFrameworks": ["protractor"],
"jhiPrefix": "jhi",
"entitySuffix": "",
"dtoSuffix": "DTO",
"otherModules": [
{
"name": "generator-jhipster-vuejs",
"version": "1.9.1"
}
],
"enableTranslation": true,
"nativeLanguage": "en",
"languages": ["en", "de"],
"blueprints": [
{
"name": "generator-jhipster-vuejs",
"version": "1.9.1"
}
],
"reactive": true
}
}
JDL for the Entity configuration(s) entityName.json files generated in the .jhipster directory
JDL entity definitions
Environment and Tools
openjdk version β11.0.2β 2019-01-15 OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.2+9) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.2+9, mixed mode)
git version 2.19.0.windows.1
node: v14.5.0
npm: 6.14.5
Docker version 19.03.8, build afacb8b
docker-compose version 1.25.5, build 8a1c60f6
- Checking this box is mandatory (this is just to show you read everything)
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Comments: 27 (26 by maintainers)
I created v6.x_maintenance from 3.9.0 tag in jhipster lib project