首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >swagger-码元自定义生成器ClassNotFound

swagger-码元自定义生成器ClassNotFound
EN

Stack Overflow用户
提问于 2015-10-28 16:09:47
回答 3查看 2.5K关注 0票数 0

我正在写一个自定义的生成器,用于“傲慢-代码”。当我尝试运行生成器时

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

它失败了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

我对任何内置发电机都没什么问题。

我在这里所做的一切(跟随自述):

  1. 克隆项目
  2. mvn package
  3. java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar meta -o output/myLibrary -n myGenerator -p com.my.company.codegen
  4. 然后是上面的代码

我还尝试在定制生成器(它没有在我能找到的任何地方生成mvn package文件)之后再次运行.jar,并尝试自己创建.jar文件。也有同样的错误。

另外,一些明显的文档不一致也增加了我的困惑:我的模块的预期位置在这里classname预期这里之间不同(该部分的末尾)。此外,做你自己的模块的命令在我认为应该指定modules/swagger-codegen-cli...时指定了modules/swagger-codegen-cli...。而且,项目自述中的指导似乎与生成这里的自定义模块自述不太一致。

我通常不使用Java,所以如果我错过了一些非常明显的东西,请原谅。提前感谢您的帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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

下面是开始创建自定义生成器所必须采取的步骤:

  1. git clone来源
  2. cd swagger-codegen
  3. mvn package
  4. 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 (“生成器”被附加到命令中指定的类名中)。您还应该能够在资源子目录中找到胡子模板。
  5. myCustomCodegenGenerator.java和模板做任何想要的更改。
  6. cd output/myLibrary
  7. mvn package
  8. cd ../..
  9. 现在生成您的自定义库: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 )

备注:

  • 显然,cding是基于我把东西放在哪里的,只是想相对清楚我在运行命令时的位置。
  • 如果您只是为生成器使用默认生成的基类(而不是对现有语言进行子类分类),您将得到一个用于FileNotFound的异常myCustomCodegen/myFile.mustache --它来自此可选块,您只需从自定义生成器类中进行注释即可。
    • 当您进行更改时,请记住mvn package您的自定义模块

票数 2
EN

Stack Overflow用户

发布于 2015-10-30 13:32:41

您需要在java命令中包含您的自定义库。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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}
票数 1
EN

Stack Overflow用户

发布于 2017-04-14 09:56:09

注意,如果您试图在Windows中创建一个生成器并从PowerShell运行它,我必须按照以下步骤修改@baylee的步骤:

  1. mvn install

  1. 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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33403791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文