启动 Eclipse 时出现“无法获取应用程序服务”错误。

65

每次我尝试启动eclipse时,都会收到以下异常,并且它无法启动。

java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).                                                                         
  at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:74)
  at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
  at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
  at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
  at org.eclipse.equinox.launcher.Main.run(Main.java:1311)

需要帮助。 谢谢。


6
在Arch Linux中,如果你只安装了eclipse-common软件包,就会发生这种情况。你还必须安装eclipse-java或eclipse-cpp软件包。 - avances123
@avances123,谢谢,我真的很困惑。我从软件商店安装了Eclipse :) - user6538026
24个回答

59

/configuration/config.ini文件应该在以逗号分隔的osgi.bundles属性中包含org.eclipse.core.runtime@start。这是默认的osgi.bundles属性,也许它在某次升级中被(意外地)更改了:

osgi.bundles=org.eclipse.equinox.common@2:start,org.eclipse.update.configurator@3:start,org.eclipse.core.runtime@start

如果必要的话,您可以通过在/eclipse.ini中将其设置为VM参数来覆盖它:

-Dosgi.bundles=org.eclipse.equinox.common@2:start,org.eclipse.update.configurator@3:start,org.eclipse.core.runtime@start

4
我找不到在我的Eclipse目录中的config.ini文件。 - GuruKulki
2
既然您在五分钟后接受了答案,我可以认为您最终找到并解决了这个问题吗? - BalusC
8
我已经在我的配置中设置了 osgi.bundle,但仍无法启动我的 Eclipse。 - Ashish
1
@Ashish:根据编辑历史记录,似乎是其他人在编辑时弄错了所需的行。Chris Knight已经修复了它。对于由此造成的任何不便,我感到抱歉,我从未想过发布错误的答案,这个糟糕的编辑只是我疏忽了。 - BalusC
4
Mars中,您可以打开产品配置文件(使用产品配置编辑器打开),转到配置选项卡,然后在启动级别下方,只需单击“添加建议...”按钮即可。这对我有用。参考截图 - s.d
显示剩余5条评论

15
我曾经也遇到过同样的问题,以下是我解决问题的步骤:我在.product编辑器的“配置”选项卡下的“插件”部分中添加了插件“org.eclipse.core.runtime”。 我将它的启动级别设置为默认值,并将自动启动设置为true。 我删除了其他插件。 我的推理是:Eclipse抱怨org.eclipse.core.runtime没有启动,所以让我们确保它能够启动,并且它是唯一启动的插件。
我这样做后,我的应用程序正常运行了。 然后我检查了config.ini文件以查看发生了什么变化,发现org.eclipse.core.runtime现在已更改为org.eclipse.core.runtime@start。这与BalusC的建议一致,只是我是从.product编辑器中进行的操作。

14

针对那些搜索“确保 org.eclipse.core.runtime bundle 已解决和启动”的人,我想提供以下建议:

仅仅因为一个插件“貌似”缺失,就把它添加到插件列表里并不总是最好的解决方案。有时候这样做会变得非常令人沮丧,因为这些新插件可能依赖于其他缺失的插件,而这些缺失的插件又需要更多的插件,如此类推...

因此,在将新依赖项添加到所需插件列表之前,请确保您理解为什么需要该插件(调试器是您的好帮手!)。

这里的问题并没有提供足够的信息,无法在所有情况下作出有效的答案,但如果您遇到 org.eclipse.core.runtime 缺失 的消息,请尝试将 eclipse.application.launchDefault 系统属性设置为 false,特别是如果您尝试运行的应用程序不是“Eclipse 应用程序”(而只是基于 Equinox 的无头运行时)。

这个链接可能会有所帮助:http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fruntime-options.html,查找 eclipse.application.launchDefault 系统属性。


+1 这是非常重要的一部分。在这种情况下,事物的路径非常相关。 - Joshua Drake
同样地,将“osgi.noShutdown”设置为true将消除此错误。我不知道这是否是自这个答案以来新增的属性,但它与evandor关于在未运行“eclipse应用程序”时该怎么做的解释相一致。 - KevinO

10

尝试从命令行运行它:

 >eclipse -clean

或者,你可以使用 java 而不是默认的 javaw 运行它,方法如下:

 >eclipse -vm c:\jdks\java_1.5\jre\bin\java.exe

6
上面的答案是正确的,但是并不是完全清楚。
你需要在eclipse.ini文件的底部添加以下行:
-Dosgi.bundles=org.eclipse.equinox.common@2:start,org.eclipse.update.configurator@3:start,org.eclipse.core.runtime@

3
请只使用“Post answer”按钮,如果您有自己的答案。如果要更正另一个答案,请使用该答案上的“编辑”链接进行编辑。 - Peter O.
我想当时我没有编辑答案的权限。 - Nick

6

我在将旧机器的操作系统/数据转移到新机器后,遇到了Mac OS Lion的问题。

通过删除我在应用程序文件夹中的旧版eclipse文件夹并重新复制eclipse文件夹(相同版本,相同解压缩的zip文件,没有更改),问题得以解决。


另外,如果您需要找到Eclipse非当前版本的存档,可以在此处找到:http://archive.eclipse.org/eclipse/downloads/ - Kevin Chen

4
对我来说,安装 jdk 1.8 解决了这个问题。

3

这个错误是因为你在删除插件时误删了config.ini文件。当Eclipse启动时,它无法在config.ini中找到配置,因此使用默认配置,而这并不适合你的操作系统。以下步骤可以解决这个问题:

  1. Delete setting in configuration folder.

  2. create a new config.ini file.

  3. copy following setting and save:

  4. osgi.splashPath = platform:/base/plugins/org.eclipse.platform  
    osgi.bundles=org.eclipse.equinox.common@2:start, org.eclipse.update.configurator@3:start, org.eclipse.core.runtime@start  
    eclipse.product=org.eclipse.sdk.ide  
    osgi.instance.area.default=@user.home/workspace  
    eof=eof  
    
  5. restart eclipse.


java.lang.RuntimeException: 未找到应用程序 ID。 在 org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:242)。 - Kalpesh Soni

2

对我来说,最终奏效的方法是在eclipse.ini文件开头添加-clean


1
在Windows环境中,以管理员身份运行Eclipse解决了该问题。(右键单击>以管理员身份运行)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接