Swagger codegen - API 和模型

3

这对我来说是代码生成的基础知识,我一直在尝试使用swagger插件并持续出现错误。这是已知问题吗?我已经尝试了几个版本的插件以查找可能存在的问题,但完全没有成功。这应该是非常简单的练习题,但我不确定自己错在哪里。请问有人能指出问题所在吗?

 <build>
    <plugins>
      <plugin>
        <groupId>io.swagger.codegen.v3</groupId>
        <artifactId>swagger-codegen-maven-plugin</artifactId>
        <version>3.0.18</version>
        <executions>
          <execution>
            <goals>
              <goal>generate</goal>
            </goals>
            <configuration>
              <inputSpec>${project.basedir}/src/main/resources/service-api.yaml</inputSpec>
              <language>java</language>
              <output>${project.build.directory}/generated-sources/</output>
              <generateSupportingFiles>false</generateSupportingFiles>
              <apiPackage>com.openapi101.api</apiPackage>
              <modelPackage>com.openapi101.models</modelPackage>
              <configOptions>
                <interfaceOnly>true</interfaceOnly>
              </configOptions>
            </configuration>
          </execution>
        </executions>
      </plugin>

错误

[ERROR]
java.lang.RuntimeException: Could not generate model 'Book'
    at io.swagger.codegen.v3.DefaultGenerator.generateModels (DefaultGenerator.java:451)
    at io.swagger.codegen.v3.DefaultGenerator.generate (DefaultGenerator.java:779)
    at io.swagger.codegen.v3.maven.plugin.CodeGenMojo.execute (CodeGenMojo.java:547)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:78)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:567)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: com.github.jknack.handlebars.HandlebarsException: /handlebars/JavaSpring/pojo.mustache:2:6: java.lang.reflect.InaccessibleObjectException: Unable to make public boolean java.util.Collections$EmptyMap.isEmpty() accessible: module java.base does not "opens java.util" to unnamed module @4bc33720
    /handlebars/JavaSpring/pojo.mustache:2:6
    at java.lang.reflect.AccessibleObject.checkCanSetAccessible (AccessibleObject.java:357)

编辑:使用了新版本-3.0.27。仍然没有作用。

这是yaml文件。

openapi: 3.0.0
 
info:
  version: 0.0.1
  title: Library Service
  description: The library service
 
tags:
  - name: "Library"
 
 
paths:
 
  /library/books:
    get:
      summary: This is summary
      tags:
        - "Library"
      description: This is a description
      operationId: getAllBooksInLibrary
      responses:
        "200":
          description: This means its ok
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Book'
 
components:
 
  schemas:
 
    Book:
      description: This is the book model
      type: object
      properties:
        name:
          description: The name of book
          type: string
        bookAuthor:
          description: name of author
          type: string

请尝试最新的版本3.0.27。如果仍无法正常工作,您可以发布OpenAPI YAML文件中“Book”模式吗? - Helen
图书模式架构已添加在上方。 - JWT
1个回答

2

我曾经也遇到过相同的问题。解决方法就是使用Java 8来运行。这样就可以顺利地运行生成代码了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接