我正在写一个自定义的生成器,用于“傲慢-代码”。当我尝试运行生成器时
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate -i path/to/swagger.json -l com.my.company.codegen.MyGenerator -o outputlocation
它失败了
Can't load config class with name com.my.company.codegen.MyGenerator
... list of built-in generators...
at io.swagger.codegen.CodegenConfigLoader.forName(CodegenConfigLoader.java:31)
at io.swagger.codegen.config.CodegenConfigurator.toClientOptInput(CodegenConfigurator.java:286)
at io.swagger.codegen.cmd.Generate.run(Generate.java:186)
at io.swagger.codegen.SwaggerCodegen.main(SwaggerCodegen.java:35)
Caused by: java.lang.ClassNotFoundException: com.my.company.codegen.MyGenerator
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:191)
at io.swagger.codegen.CodegenConfigLoader.forName(CodegenConfigLoader.java:29)
... 3 more
我对任何内置发电机都没什么问题。
我在这里所做的一切(跟随自述):
mvn package
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar meta -o output/myLibrary -n myGenerator -p com.my.company.codegen
我还尝试在定制生成器(它没有在我能找到的任何地方生成mvn package
文件)之后再次运行.jar,并尝试自己创建.jar文件。也有同样的错误。
另外,一些明显的文档不一致也增加了我的困惑:我的模块的预期位置在这里和classname
预期这里之间不同(该部分的末尾)。此外,做你自己的模块的命令在我认为应该指定modules/swagger-codegen-cli...
时指定了modules/swagger-codegen-cli...
。而且,项目自述中的指导似乎与生成这里的自定义模块自述不太一致。
我通常不使用Java,所以如果我错过了一些非常明显的东西,请原谅。提前感谢您的帮助!
发布于 2015-11-09 18:15:07
在尝试了一堆东西/互联网之后,下面是起作用的地方:
java -cp output/myLibrary/target/myCustomCodegen-swagger-codegen-1.0.0.jar:modules/swagger-codegen-cli/target/swagger-codegen-cli.jar io.swagger.codegen.SwaggerCodegen generate -i path/to/swagger.json -l com.my.company.codegen.MyCustomCodegenGenerator -o outputlocation
下面是开始创建自定义生成器所必须采取的步骤:
git clone
来源cd swagger-codegen
mvn package
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar meta -o output/myLibrary -n myCustomCodegen -p com.my.company.codegen
。这将创建output/myLibrary
和子目录,您应该在其中找到myCustomCodegenGenerator.java
(“生成器”被附加到命令中指定的类名中)。您还应该能够在资源子目录中找到胡子模板。myCustomCodegenGenerator.java
和模板做任何想要的更改。cd output/myLibrary
mvn package
cd ../..
java -cp output/myLibrary/target/myCustomCodegen-swagger-codegen-1.0.0.jar:modules/swagger-codegen-cli/target/swagger-codegen-cli.jar io.swagger.codegen.SwaggerCodegen generate -i path/to/swagger.json -l com.my.company.codegen.MyCustomCodegenGenerator -o outputlocation
(步骤7中的构建应该为您生成了target/myCustomCodegen-swagger-codegen-1.0.0.jar
)备注:
cd
ing是基于我把东西放在哪里的,只是想相对清楚我在运行命令时的位置。FileNotFound
的异常myCustomCodegen/myFile.mustache
--它来自此可选块,您只需从自定义生成器类中进行注释即可。mvn package
您的自定义模块
发布于 2015-10-30 13:32:41
您需要在java命令中包含您的自定义库。例如:
java -cp path/to/your/jar.com:modules/swagger-codegen-cli/target/swagger-codegen-cli.jar \
-jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar \
{args}
发布于 2017-04-14 09:56:09
注意,如果您试图在Windows中创建一个生成器并从PowerShell运行它,我必须按照以下步骤修改@baylee的步骤:
mvn install
和
java -cp 'output/myLibrary/target/myCustomCodegen-swagger-codegen-1.0.0.jar;modules/swagger-codegen-cli/target/swagger-codegen-cli.jar' io.swagger.codegen.Codegen -i path/to/swagger.json -l my-language -o outputlocation
https://stackoverflow.com/questions/33403791
复制相似问题