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)

Most upvoted comments

I created v6.x_maintenance from 3.9.0 tag in jhipster lib project