Quarkus: Quarkus Fail on startup with quarkus-smallrye-openapi

Created on 17 Nov 2019  路  3Comments  路  Source: quarkusio/quarkus

Hi I am preparing a demo for my computer science undergraduate students from semester 2020.1 and am having this error when adding Swagger.

Describe the bug
Fail on startup with Swagger with quarkus-smallrye-openapi

Expected behavior
Start Swagger Ui on /swagger-ui

Actual behavior
Fail on startup

To Reproduce
Steps to reproduce the behavior:

  1. ADD Dependency on Quarkus Version 1.0.0-RC1

    io.quarkus
    quarkus-smallrye-openapi

    Configuration
# Add your application.properties here, if applicable.
# Configuration file
# key = value
quarkus.http.port=8080

#datasource
quarkus.datasource.url=jdbc:h2:file:~/papw2019
quarkus.datasource.driver=org.h2.Driver
quarkus.datasource.username=sa
quarkus.datasource.password=
quarkus.datasource.max-size=8
quarkus.datasource.min-size=2
quarkus.hibernate-orm.database.generation=drop-and-create

#Swagger
quarkus.smallrye-openapi.path=/swagger
quarkus.swagger-ui.always-include=true

Screenshots
(If applicable, add screenshots to help explain your problem.)

Environment (please complete the following information):

  • Output of uname -a or ver:
  • Output of java -version:
  • GraalVM version (if different from Java):
  • Quarkus version or git rev:

Additional context
Caused by: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.smallrye.openapi.deployment.SmallRyeOpenApiProcessor#build threw an exception: java.lang.StringIndexOutOfBoundsException: St
ring index out of range: 3
at java.lang.String.charAt(String.java:658)
at io.smallrye.openapi.runtime.scanner.dataobject.TypeResolver.updateTypeResolvers(TypeResolver.java:456)
at io.smallrye.openapi.runtime.scanner.dataobject.TypeResolver.scanMethod(TypeResolver.java:426)
at io.smallrye.openapi.runtime.scanner.dataobject.TypeResolver.lambda$getAllFields$4(TypeResolver.java:355)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
at io.smallrye.openapi.runtime.scanner.dataobject.TypeResolver.getAllFields(TypeResolver.java:355)
at io.smallrye.openapi.runtime.scanner.OpenApiDataObjectScanner.depthFirstGraphSearch(OpenApiDataObjectScanner.java:247)
at io.smallrye.openapi.runtime.scanner.OpenApiDataObjectScanner.process(OpenApiDataObjectScanner.java:221)
at io.smallrye.openapi.runtime.scanner.OpenApiDataObjectScanner.process(OpenApiDataObjectScanner.java:168)
at io.smallrye.openapi.runtime.util.SchemaFactory.typeToSchema(SchemaFactory.java:240)
at io.smallrye.openapi.runtime.scanner.OpenApiAnnotationScanner.createResponseFromJaxRsMethod(OpenApiAnnotationScanner.java:877)
at io.smallrye.openapi.runtime.scanner.OpenApiAnnotationScanner.processJaxRsMethod(OpenApiAnnotationScanner.java:685)
at io.smallrye.openapi.runtime.scanner.OpenApiAnnotationScanner.processJaxRsResourceClass(OpenApiAnnotationScanner.java:437)
at io.smallrye.openapi.runtime.scanner.OpenApiAnnotationScanner.scan(OpenApiAnnotationScanner.java:214)
at io.quarkus.smallrye.openapi.deployment.SmallRyeOpenApiProcessor.generateAnnotationModel(SmallRyeOpenApiProcessor.java:298)
at io.quarkus.smallrye.openapi.deployment.SmallRyeOpenApiProcessor.build(SmallRyeOpenApiProcessor.java:246)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at io.quarkus.deployment.ExtensionLoader$1.execute(ExtensionLoader.java:941)
at io.quarkus.builder.BuildContext.run(BuildContext.java:415)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2011)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1535)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1426)
at java.lang.Thread.run(Thread.java:748)
at org.jboss.threads.JBossThread.run(JBossThread.java:479)

    at io.quarkus.builder.Execution.run(Execution.java:108)
    at io.quarkus.builder.BuildExecutionBuilder.execute(BuildExecutionBuilder.java:121)
    at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:130)
    at io.quarkus.runner.RuntimeRunner.run(RuntimeRunner.java:111)
    ... 3 more
kinbug triagduplicate

All 3 comments

Hi @rodrigofujioka thanks for reporting this. It looks to me the same issue as
https://github.com/quarkusio/quarkus/issues/5376
Do you have an Optional param or return type? If so can you try the workaround suggested on the issue.

@EricWittmann has opened https://github.com/smallrye/smallrye-open-api/issues/210 to discuss on potential fixes on smallrye-openapi side.

Exactly that, the bug is the same. Thanks, I already made changes here. I'll be following to update my code later. After all, I will only use it at the beginning of 2020.1 for Java Web classes.

Thanks @machi1990 .

Closing as duplicate of #5376

Was this page helpful?
0 / 5 - 0 ratings