Eclipse产品定义未正确导出VM参数致应用启动失败,求答疑
Eclipse 4.28产品定义VM参数启动失败问题分析
这是Eclipse处理VM参数时的bug,原因和解决方式如下:
问题根源
Java的--add-opens参数语法要求每个需要开放的模块包都必须单独携带--add-opens前缀,不能将多个包路径合并到同一个--add-opens之后。Eclipse产品定义的Launching标签页在处理多行同前缀VM参数时,错误地将它们合并成了单前缀格式:
--add-opens java.base/java.util=ALL-UNNAMED java.base/java.text=ALL-UNNAMED java.desktop/java.awt.font=ALL-UNNAMED
这种写法不符合JVM规范,JVM会把java.base/java.text=ALL-UNNAMED误认为是主类名,因此抛出ClassNotFoundException。
解决方式
必须为每个开放声明单独添加--add-opens前缀,无论单行还是多行书写:
--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.text=ALL-UNNAMED --add-opens java.desktop/java.awt.font=ALL-UNNAMED
或者单行完整声明:
--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.text=ALL-UNNAMED --add-opens java.desktop/java.awt.font=ALL-UNNAMED
补全前缀后,JVM就能正确识别每个--add-opens的参数意图,应用即可正常启动。
内容的提问来源于stack exchange,提问作者paul
相关产品推荐
相关产品推荐

