【发布时间】: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,请将你的依赖列表加倍,看看你是否有这个<groupId>io.swagger</groupId><artifactId>swagger-jersey2-jaxrs</artifactId> -
@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