我在做一个小项目来学习装模作样的代码。当我执行"mvn干净安装“时,下一个错误将出现:
Unable to make public boolean java.util.Collections$EmptyMap.isEmpty() accessible: module java.base does not "opens java.util" to unnamed module @1e1b061
然后
Failed to execute goal io.swagger.codegen.v3:swagger-codegen-maven-plugin:3.0.18:generate (default) on project swgtst-api: Code generation failed. See above for the full exception.
当我试图像这里所写的那样用java --add-opens=java.base/java.util=ALL-UNNAMED来解决这个问题时,https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-2F61F3A9-0979-46A4-8B49-325BA0EE8B66什么都没有发生,只显示了https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-2F61F3A9-0979-46A4-8B49-325BA0EE8B66帮助。
当然,最后一个命令在语法上有问题,但我不知道具体是什么.我做错了什么?
发布于 2021-06-30 05:04:39
该选项不会单独执行任何操作,而是修改Java调用的运行方式。您仍然需要将该选项添加到运行java时调用的mvn中。
这样做的一种方法是将选项添加到Maven文件中(其他人可以提供帮助,也可以搜索如何在Maven文件中设置Java选项)。
我遇到了类似的情况,而是使用_JAVA_OPTIONS来传递它。您可以通过在mvn的调用前加上_JAVA_OPTIONS来做类似的事情,尽管Maven可能会覆盖这些调用,并且您必须像上面描述的那样修改文件。
作为参考,下面是我成功使用的命令:
_JAVA_OPTIONS="--add-opens=java.base/java.util=ALL-UNNAMED" swagger-codegen3 generate --lang python --input-spec spec.yaml发布于 2022-07-13 20:12:15
此错误表明代码生成插件无法通过反射访问
java.base和java.util包。在这些情况下,JDK 16+抛出异常而不是警告。 要在JDK 16+环境中执行codegen,必须设置以下JVM选项以允许访问这些包:
--add-opens=java.base/java.util=ALL-UNNAMED要将maven配置为在运行时使用此选项,请在路径
jvm.config中创建一个文件${maven.projectBasedir}/.mvn,并将上面的选项添加到该文件中。 有关更多信息,请参见这里: -加-打开 jva.config文件
发布于 2022-10-13 10:29:36
我也有同样的问题。我可以通过升级车把来解决这一问题,这是一种傲慢的代码生成依赖:
<plugin>
<groupId>io.swagger.codegen.v3</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>com.github.jknack</groupId>
<artifactId>handlebars</artifactId>
<version>4.3.0</version>
</dependency>
</dependencies>
<executions>
.
.
.
</plugin>另一种选择是简单地将您的swagger代码maven插件升级到3.0.0或更高版本。这里有更多的信息
https://stackoverflow.com/questions/67111763
复制相似问题