Unrecognized option: --add-opens java.base/java.lang=ALL-UNNAMED
由于 Java中有关反射相关的功能自从 JDK9 就开始进行了限制,因此如果还想继续在JDK9以及更高的版本中使用反射相关的功能,需要添加JVM启动参数, --add-opens java.base/java.lang=ALL-UNNAMED
。
由于现在的项目都是用Docker部署的,所以紧接着在DockerFile中添加了这个JVM启动参数,如下所示:
ENTRYPOINT ["java", "--add-opens java.base/java.lang.reflect=ALL-UNNAMED","-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
但是Docker在启动项目的时候又报错了
Unrecognized option: --add-opens java.base/java.lang=ALL-UNNAMED
2024-05-15T09:54:39.098594714Z Error: Could not create the Java Virtual Machine.
2024-05-15T09:54:39.098656798Z Error: A fatal exception has occurred. Program will exit.
原来是因为JVM并不能识别参数中的空格,所以正确的参数应该是:
--add-opens=java.base/java.util=ALL-UNNAMED
完整DockerFile文件
FROM alibabadragonwell/dragonwell:17-anolis
MAINTAINER test@qq.com
RUN mkdir -p /project
WORKDIR /project
EXPOSE 7911
ADD ./target/app.jar ./app.jar
ENTRYPOINT ["java", "--add-opens=java.base/java.lang.reflect=ALL-UNNAMED","-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
CMD ["--spring.profiles.active=prod"]
本文作者:醒醒和等等
本文链接:https://www.cnblogs.com/leepandar/p/18193471
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步