
Eclipse PDE 产品定义(Product Definition)在“Launching”选项卡中配置 --add-opens 等模块化 JVM 参数时,若格式不正确会导致启动失败;必须使用 --add-opens=module/package=target 的等号连接形式,而非空格分隔,才能被正确解析并传递给 JVM。
eclipse pde 产品定义(product definition)在“launching”选项卡中配置 `--add-opens` 等模块化 jvm 参数时,若格式不正确会导致启动失败;必须使用 `--add-opens=module/package=target` 的等号连接形式,而非空格分隔,才能被正确解析并传递给 jvm。
在 Eclipse 4.28(及后续版本)中,PDE 的产品导出与启动机制对 JVM 参数的解析存在特定限制:当在产品定义的 Launching → VM Arguments 字段中输入多行或空格分隔的 --add-opens 参数(如 --add-opens java.base/java.util=ALL-UNNAMED)时,Eclipse 内部会错误地将后续参数(如 java.base/java.text=ALL-UNNAMED)误识别为主类名,从而抛出类似以下错误:
Fehler: Hauptklasse java.base.java.text=ALL-UNNAMED konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: java.base.java.text=ALL-UNNAMED
根本原因在于:PDE 启动器未按标准 JVM 规范解析多个独立的 --add-opens 指令,而是将其合并为单个参数,并仅保留首个 --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
⚠️ 错误写法(将导致启动失败):
Eclipse IDE 是一款由 Eclipse 基金会管理的开源、跨平台集成开发环境。其核心基于 Java 构建,通过强大的插件架构可扩展支持 C/C++、Python、PHP 等多种编程语言。它提供丰富的代码编辑、调试和重构工具,并紧密集成 Git、Maven 等现代开发工具链,是全球众多开发者首选的 Java 开发利器。
- 使用空格分隔(即使换行):
--add-opens java.base/java.util=ALL-UNNAMED - 多个参数挤在一行且无等号:
--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.text=ALL-UNNAMED
? 补充说明:
- 此行为已被确认为 Eclipse PDE 已知问题 #735,当前尚未修复,但上述等号格式是官方推荐的规避方案;
- 该规则同样适用于
--add-exports、--add-reads等 JDK 9+ 模块系统参数; - 若通过
.product文件手动编辑,也请确保节点内每个参数均为独立、带等号的完整形式; - 验证方式:启动应用前,在 Overview → Launching → Launch an Eclipse Application 下点击 Run 旁的下拉箭头 → Run Configurations…,检查生成的 VM arguments 字段是否准确呈现为三行独立参数(而非合并成一行缺失
--add-opens前缀的内容)。
遵循此规范,即可确保模块化参数被 JVM 正确加载,避免 ClassNotFoundException 或 IllegalAccessError,保障基于 Java 11+ 构建的 RCP 应用稳定启动。










