使用org.eclipse.equinox.simpleconfigurator启动Eclipse 4.26失败求助
解决Eclipse 4.26中simpleConfigurator启动时"No application id has been found"的问题
问题场景
使用Eclipse 4.26版本,通过simpleConfigurator启动应用时抛出以下异常:
java.lang.RuntimeException: No application id has been found. at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:246) at org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:33) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596) at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
已完成配置:
- 按教程设置启动级别,配置写入
org.eclipse.equinox.simpleconfigurator/configuration/bundles.info - 无插件解析错误,确认所有插件已加载
- 当前
config.ini配置:
osgi.clean=true org.eclipse.equinox.simpleconfigurator.configUrl=file\:org.eclipse.equinox.simpleconfigurator/bundles.info osgi.bundles=org.eclipse.equinox.simpleconfigurator_1.4.200.v20221111-1340.jar@1\:start osgi.bundles.defaultStartLevel=4 osgi.checkConfiguration=true
尝试调整启动级别无效,以下是可行的解决方案:
解决方案
1. 在config.ini中指定应用ID
Eclipse启动必须明确目标应用ID,在config.ini中添加:
eclipse.application=你的应用ID
应用ID可从你RCP应用的plugin.xml或application.e4xmi中获取,格式通常为com.xxx.xxx.application。
2. 检查bundles.info的关键bundle配置
确保bundles.info中包含以下两类bundle:
- org.eclipse.equinox.app:这是处理应用启动的核心bundle,必须存在且启动级别正确
- 你的应用bundle:确保其条目存在,启动级别建议设为
4(与默认级别一致)
示例条目:
org.eclipse.equinox.app,1.6.200.v20220817-1212,plugins/org.eclipse.equinox.app_1.6.200.v20220817-1212.jar,4,true com.example.rcp.application,1.0.0.qualifier,plugins/com.example.rcp.application_1.0.0.qualifier.jar,4,true
3. 验证应用bundle的配置正确性
传统RCP应用
检查plugin.xml中是否有org.eclipse.core.runtime.applications扩展,示例:
<extension id="application" point="org.eclipse.core.runtime.applications"> <application> <run class="com.example.rcp.Application"> </run> </application> </extension>
e4应用
- 确认
application.e4xmi中定义了完整的应用模型 - 检查bundle的
MANIFEST.MF是否包含Eclipse-Application头:
Eclipse-Application: com.example.rcp.application
4. 排查启动命令行参数
如果通过命令行启动,确保-application参数指定的ID与config.ini一致,且该ID确实存在。
5. 清理并重建配置
- 删除
configuration/org.eclipse.equinox.simpleconfigurator文件夹 - 执行
eclipse -clean命令触发配置重建 - 重启应用
额外排查手段
- 查看
configuration/logs/eclipse.log,获取启动过程的详细日志,确认应用bundle是否被激活 - 启动时添加
-console参数打开OSGi控制台:- 执行
ss命令查看所有bundle状态,确保org.eclipse.equinox.app和你的应用bundle处于ACTIVE状态 - 执行
app -list命令,检查系统中注册的应用ID是否包含你的目标ID
- 执行
内容的提问来源于stack exchange,提问作者jeevan08
相关产品推荐
相关产品推荐

