1

我在这里留下了一个未解决的问题


我正在尝试创建一个自定义代码生成,我设法通过将文件放入代码生成项目中来使其工作,但我希望它像这样工作:https ://github.com/swagger-api/swagger-codegen#制作你自己的代码生成模块

我根本没有修改自动生成的项目,但我不断得到:

Error: Could not find or load main class io.swagger.codegen.SwaggerCodegen

这是命令行:

java -cp output/myLibrary/target/myCustomCodegen-swagger-codegen-1.0.0.jar:swagger-codegen-cli-2.1.6.jar io.swagger.codegen.SwaggerCodegen generate -i https://watson-api-explorer.mybluemix.net/listings/conversation-v1-experimental.json -l com.my.company.codegen.Mycustomcodegengenerator -o outputlocation 

我从这里得到了罐子https://mvnrepository.com/artifact/io.swagger/swagger-codegen-project/2.1.6 这就是我正在做的事情:

  1. 运行 java -jar swagger-codegen-cli-2.1.6.jar meta \ -o output/myLibrary -n myClientCodegen -p com.my.company.codegen 创建服装代码生成器

  2. mvn package在输出/myLibrary 中运行

  3. java -cp output/myLibrary/target/myCustomCodegen-swagger-codegen-1.0.0.jar:swagger-codegen-cli-2.1.6.jar io.swagger.codegen.SwaggerCodegen generate -i https://watson-api-explorer.mybluemix.net/listings/conversation-v1-experimental.json -l com.my.company.codegen.Mycustomcodegengenerator -o outputlocation在包含 swagger-codege-cli-2.1.6.jar 和输出文件夹的文件夹中运行

如果我删除第一部分,它确实找到了类,但没有找到新语言:

java -cp swagger-codegen-cli-2.1.6.jar io.swagger.codegen.SwaggerCodegen generate -i https://watson-api-explorer.mybluemix.net/listings/conversation-v1-experimental.json -l com.my.company.codegen.Mycustomcodegengenerator -o outputlocation 

我已经查看了“错误:无法找到或加载主类”问题的答案,但没有设法修复它。

这是jar的链接

4

3 回答 3

2

对于 Windows,将冒号 ( :) 更改为分号 ( ;) - 在类路径中的 jar 之间。所以而不是

java -cp output/myLibrary/target/myCustomCodegen-swagger-codegen-1.0.0.jar:swagger-codegen-cli-2.1.6.jar io.swagger.codegen.SwaggerCodegen generate -i https://watson-api-explorer.mybluemix.net/listings/conversation-v1-experimental.json -l com.my.company.codegen.Mycustomcodegengenerator -o outputlocation

它应该是

java -cp output/myLibrary/target/myCustomCodegen-swagger-codegen-1.0.0.jar;swagger-codegen-cli-2.1.6.jar io.swagger.codegen.SwaggerCodegen generate -i https://watson-api-explorer.mybluemix.net/listings/conversation-v1-experimental.json -l com.my.company.codegen.Mycustomcodegengenerator -o outputlocation

多个类路径需要用分号分隔。 http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html

于 2016-11-21T18:39:49.240 回答
1

问题是您没有swagger-codegen-2.1.6.jar在通话中指定正确的路径。这就是为什么它找不到main-class。

如果你在根项目中swagger-codegen,你应该像这样指定它:modules/swagger-codegen-cli/target/swagger-codegen-cli.jar

~$ cd ~/git/swagger-codegen # go into your root project
~/git/swagger-codegen$ # ... do the steps you described
~/git/swagger-codegen$ java  -cp \
 output/myLibrary/target/myClientCodegen-swagger-codegen-1.0.0.jar:modules/swagger-codegen-cli/target/swagger-codegen-cli.jar \
 io.swagger.codegen.SwaggerCodegen \
 generate -i https://watson-api-explorer.mybluemix.net/listings/conversation-v1-experimental.json \
 -l com.my.company.codegen.Mycustomcodegengenerator \
 -o outputlocation

或作为单行:

~/git/swagger-codegen$ java  -cp output/myLibrary/target/myClientCodegen-swagger-codegen-1.0.0.jar:modules/swagger-codegen-cli/target/swagger-codegen-cli.jar io.swagger.codegen.SwaggerCodegen generate -i https://watson-api-explorer.mybluemix.net/listings/conversation-v1-experimental.json -l com.my.company.codegen.Mycustomcodegengenerator -o outputlocation

更新 1

我很确定当您构建类路径时,-cp您的swagger-codegen-cli-2.1.6.jar. 请测试以下内容。

将 (myClientCodegen-swagger-codegen-1.0.0.jarswagger-codegen-cli-2.1.6.jar) jar 复制到同一个文件夹中。然后进入此文件夹并尝试以下操作:

javap -cp myCustomCodegen-swagger-codegen-1.0.0.jar:swagger-codegen-cli-2.1.6.jar io.swagger.codegen.SwaggerCodegen

java p检查主类io.swagger.codegen.SwaggerCodegen是否可用。在我的机器上打印这个:

Compiled from "SwaggerCodegen.java"
public class io.swagger.codegen.SwaggerCodegen {
  public io.swagger.codegen.SwaggerCodegen();
  public static void main(java.lang.String[]);
}
于 2016-07-15T16:26:23.093 回答
0

在 macOS 10.14 的 Eclipse 4.19 中作为 Spring Boot 应用程序运行时,我遇到了类似的问题:

“错误:无法找到或加载主类 io.swagger.Swagger2SpringBoot”

…即使我正盯着这个包含 main 方法的类。我的解决方案是发布一个“Maven 更新项目”。这与其他具有奇怪 Java 症状的情况一样,解决了该问题。

于 2021-05-21T22:21:33.750 回答