如何实现Eclipse RCP产品多实例启动及工作区选择弹窗功能
实现Eclipse RCP多实例工作区启动的配置方案
1. 修正默认工作区路径配置
你之前使用的@config.dir指向的是产品安装目录下的configuration文件夹,并非exe所在目录。要让第一个实例在exe同目录创建工作区,需修改config.ini中的参数:
osgi.instance.area.default=@user.dir/workspace
@user.dir代表启动exe时的当前工作目录(即exe所在目录),这样第一个实例启动时会自动在exe同目录生成workspace文件夹作为默认工作区。
2. 配置启动器触发工作区选择对话框
要让从任务栏启动额外实例时弹出工作区选择框,需调整myapplication.ini的配置,移除之前设置的-Dosgi.instance.area.default参数,改为添加以下强制触发选择逻辑的参数:
-vmargs -Dorg.eclipse.ui.ide.allowAppInstance=true -Dosgi.instance.area=@none
Dosgi.instance.area=@none:告知RCP启动时不使用默认工作区,必须由用户选择Dorg.eclipse.ui.ide.allowAppInstance=true:允许同时运行多个应用实例(默认可能限制单实例运行)
3. 确保产品复用IDE工作区管理逻辑
如果你的RCP应用使用自定义Application类,需确保它继承自org.eclipse.ui.internal.ide.application.IDEApplication,借助其内置的工作区选择逻辑:
public class MyApplication extends IDEApplication { @Override public Object start(IApplicationContext context) throws Exception { // 保留自定义业务逻辑即可,父类会处理工作区选择流程 return super.start(context); } }
如果是通过.product文件配置启动类,直接选择org.eclipse.ui.ide.application.IDEApplication作为应用入口即可。
4. 验证启动行为
- 直接双击exe启动时,会读取
config.ini的配置,自动在exe同目录创建并使用默认工作区 - 从任务栏启动新实例时,
myapplication.ini的参数生效,触发工作区选择对话框,用户可选择已有工作区或创建新工作区,实现多实例并行运行
注意事项
- 启动器的
myapplication.ini中VM参数优先级高于config.ini,因此两种启动场景的配置不会冲突 - 确保产品依赖
org.eclipse.ui.ide插件,工作区选择对话框由该插件提供
内容的提问来源于stack exchange,提问作者mahesh bhagirath
相关产品推荐
相关产品推荐

