在尝试安装WTP网页编辑器插件时,我在Eclipse Galileo下不断收到以下错误:
java.lang.IllegalStateException: Error while loading manipulator.
at org.eclipse.equinox.internal.p2.touchpoint.eclipse.LazyManipulator.loadDelegate(LazyManipulator.java:54)
at org.eclipse.equinox.internal.p2.touchpoint.eclipse.LazyManipulator.getConfigData(LazyManipulator.java:108)
at org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.InstallBundleAction.installBundle(InstallBundleAction.java:76)
at org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.InstallBundleAction.execute(InstallBundleAction.java:29)
at org.eclipse.equinox.internal.p2.engine.ParameterizedProvisioningAction.execute(ParameterizedProvisioningAction.java:35)
at org.eclipse.equinox.internal.provisional.p2.engine.Phase.mainPerform(Phase.java:129)
at org.eclipse.equinox.internal.provisional.p2.engine.Phase.perform(Phase.java:72)
at org.eclipse.equinox.internal.provisional.p2.engine.PhaseSet.perform(PhaseSet.java:44)
at org.eclipse.equinox.internal.provisional.p2.engine.Engine.perform(Engine.java:54)
at org.eclipse.equinox.internal.provisional.p2.ui.operations.ProvisioningUtil.performProvisioningPlan(ProvisioningUtil.java:389)
at org.eclipse.equinox.internal.provisional.p2.ui.operations.ProfileModificationOperation.doExecute(ProfileModificationOperation.java:61)
at org.eclipse.equinox.internal.provisional.p2.ui.operations.ProvisioningOperation.execute(ProvisioningOperation.java:37)
at org.eclipse.equinox.internal.provisional.p2.ui.ProvisioningOperationRunner$1.run(ProvisioningOperationRunner.java:94)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
一篇博客称Eclipse Galileo与Java 1.6不兼容(什么??),所以我尝试用Java 1.5运行Eclipse,但这没有帮助。有没有其他人有这个问题,能够绕过它吗?
编辑 BTW,低于错误日志中的错误,它也会显示
session context was:(profile=epp.package.java, phase=org.eclipse.equinox.internal.provisional.p2.engine.phases.Install, operand=null --> [R]javax.mail 1.4.0.v200905040518, action=org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.InstallBundleAction).
答案 0 :(得分:8)
您可以尝试遵循bug 277242
中提到的各种建议同时检查你的eclipse.ini:
更一般地说,当我们无法阅读“
-startup
”时,您看到的错误就会发生,因为我们使用它来定位install.area。
根据Jelle van Geuns在评论中的建议(并由Halfstop确认):
我发现一个MacOS有两个文件夹(MacOS和Eclipse),有两组独立的配置文件 每个插件子文件夹中都有一个“
org.eclipse.equinox.launcher
”启动jar,但版本略有不同。Eclipse可执行文件位于MacOS文件夹中 但
eclipse.ini
设置为在Eclipse/plugins
下查找启动jar,但版本错误。对我有用的解决方案是将
startup.jar
的两个版本复制到两个插件子文件夹中。
Halfstop确认:
我将Eclipse中的所有内容复制到MacOS目录中,这解决了它。
答案 1 :(得分:2)
我今天刚遇到这个问题。 VonC et al 提供的答案有助于定位问题,但并没有完全解决。
就我而言,-startup
中的 MacOS/eclipse.ini
中指定的位置在 ../Eclipse/plugins
文件夹而不是 ../MacOS/plugins
文件夹中查找不正确。
我更正了路径,错误消失了。
答案 2 :(得分:0)
尝试chown -R your_user_name:your_user_name /path/to/eclipe
答案 3 :(得分:0)
尝试编辑
Eclipse/configuration/config.ini
。
确保osgi.instance.area.default=
值是正确的工作空间。这对我有用。
答案 4 :(得分:0)
我不确定上述答案是否足以解决此问题。我发现,使用我们的一些eclipse派生RCP产品,在某些Linux机器上,插件会因为这样的日志条目而失败:
!ENTRY org.eclipse.equinox.p2.engine 4 4 2017-02-23 12:00:49.492
!MESSAGE An error occurred while installing the items
!SUBENTRY 1 org.eclipse.equinox.p2.engine 4 0 2017-02-23 12:00:49.492
!MESSAGE session context was:(profile=TIBCOBusinessStudio-4.0, phase=org.eclipse.equinox.internal.p2.engine.phases.Install, operand=null --> [R]com.tibco.eclipse.p2.installer 1.1.3.20161130, action=org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.InstallBundleAction).
!SUBENTRY 1 org.eclipse.equinox.p2.engine 4 0 2017-02-23 12:00:49.492
!MESSAGE Error while loading manipulator.
!STACK 0
java.lang.IllegalStateException: Error while loading manipulator.
at org.eclipse.equinox.internal.p2.touchpoint.eclipse.LazyManipulator.loadDelegate(LazyManipulator.java:59)
at org.eclipse.equinox.internal.p2.touchpoint.eclipse.LazyManipulator.getConfigData(LazyManipulator.java:108)
at org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.InstallBundleAction.installBundle(InstallBundleAction.java:75)
at org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.InstallBundleAction.execute(InstallBundleAction.java:32)
at org.eclipse.equinox.internal.p2.engine.ParameterizedProvisioningAction.execute(ParameterizedProvisioningAction.java:38)
at org.eclipse.equinox.internal.p2.engine.Phase.mainPerform(Phase.java:183)
at org.eclipse.equinox.internal.p2.engine.Phase.perform(Phase.java:95)
at org.eclipse.equinox.internal.p2.engine.PhaseSet.perform(PhaseSet.java:47)
at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:75)
at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:44)
at org.eclipse.equinox.p2.operations.ProvisioningSession.performProvisioningPlan(ProvisioningSession.java:159)
at org.eclipse.equinox.p2.operations.ProfileModificationJob.runModal(ProfileModificationJob.java:79)
at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
这种情况发生的原因(我怀疑)是配置文件的实际文件名与lazyloader的绝对名称进行比较。在我的情况下,主目录是符号链接,因此两个名称不匹配。解决方案是编辑eclipse.ini(或者你的名字),并确保所有引用eclipse home目录的路径都是完全限定的,不依赖于符号链接。