【问题标题】:Swagger CodeGen swagger-codegen-cli-3.0.25.jar| issue:Can't load config class with name jaxrs-jerseySwagger CodeGen swagger-codegen-cli-3.0.25.jar|问题:无法加载名称为 jaxrs-jersey 的配置类
【发布时间】:2021-05-10 04:57:32
【问题描述】:

我正在尝试使用 ProcessBuilder 通过 swagger-codegen-cli-3.0.25.jar 从 Java 代码中生成 Swagger Stub。输入是 OAS 3.0.0 有效的 YAML。

我有以下代码:

String javaBin = javaHome + File.separator + "bin" + File.separator + "java";
List<String> command = new ArrayList<>();
command.add(javaBin);
command.add("-jar");
command.add(System.getProperty("user.dir")+"//lib//swagger-codegen-cli-3.0.25.jar");
command.add("generate");
command.add("-l jaxrs-jersey");
command.add("-i " + oasYAML.getAbsolutePath());
command.add("-o D:\\EmailStatement\\swaggercode");

相同的 CLI 命令在 CMD 中运行良好,但在 java 代码中出现以下错误:

Exception in thread "main" java.lang.RuntimeException: Can't load config class with name jaxrs-jersey Available: dart
aspnetcore
csharp
csharp-dotnet2
go
go-server
dynamic-html
html
html2
java
jaxrs-cxf-client
jaxrs-cxf
inflector
jaxrs-cxf-cdi
jaxrs-spec
jaxrs-jersey
jaxrs-di
jaxrs-resteasy-eap
jaxrs-resteasy
micronaut
spring
nodejs-server
openapi
openapi-yaml
kotlin-client
kotlin-server
php
python
python-flask
r
ruby
scala
scala-akka-http-server
swift3
swift4
swift5
typescript-angular
typescript-axios
typescript-fetch
javascript

at io.swagger.codegen.v3.CodegenConfigLoader.forName(CodegenConfigLoader.java:31)
at io.swagger.codegen.v3.cli.SwaggerCodegen.main(SwaggerCodegen.java:96)
Caused by: java.lang.ClassNotFoundException: jaxrs-jersey
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at io.swagger.codegen.v3.CodegenConfigLoader.forName(CodegenConfigLoader.java:29)

【问题讨论】:

  • 在 Java 代码中,您可能必须为球衣配置指定完全限定的类名,例如 -l io.swagger.jersey.config.JerseyJaxrsConfig。此外,如果你得到这个配置类的ClassNotFoundException,请将你的依赖列表加倍,看看你是否有这个&lt;groupId&gt;io.swagger&lt;/groupId&gt;&lt;artifactId&gt;swagger-jersey2-jaxrs&lt;/artifactId&gt;
  • @ssasi 嗨,感谢您的回复,我尝试使用像这样的完全限定名称 -l io.swagger.jersey.config.JerseyJaxrsConfig 并添加了“swagger-jersey2-jaxrs”jar 依赖项。但这对我不起作用,我仍然收到 ClassNotFound 异常:Can't load config class with name io.swagger.jersey.config.JerseyJaxrsConfig......Caused by: java.lang.ClassNotFoundException: io.swagger .jersey.config.JerseyJaxrsConfig

标签: java jersey swagger swagger-codegen


【解决方案1】:

遇到同样的错误。几个小时以来,我已经调试了这个问题。最后发现键值对字符串不应在参数键和值之间包含空格,例如在您的代码中删除-l 和 jaxrs-jersey 之间的空格。应该是这样的:command.add("-ljaxrs-jersey");。删除所有类似的空格。库应该在使用它之前修剪值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多