我正在尝试使用ProcessBuilder从java代码中通过swagger-codegen-cli-3.0.25.jar生成Swagger。输入为美洲国家组织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)发布于 2022-03-07 12:02:15
也有同样的错误。几个小时以来,我一直在调试这个问题。最后,指出键值对字符串不应该包含param键和值之间的空格,例如在代码中删除-l和jaxrs-jersey之间的空格。应该是这样的:command.add("-ljaxrs-jersey");。删除所有类似的空格。库在使用它之前应该修剪它的值。
https://stackoverflow.com/questions/67464956
复制相似问题