“加载机械手时出错”

Posted

技术标签:

【中文标题】“加载机械手时出错”【英文标题】:"Error while loading manipulator" 【发布时间】:2009-09-10 07:53:17 【问题描述】:

在尝试安装 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,但这并没有帮助。有没有其他人遇到过这个问题并且能够解决它?


编辑顺便说一句,错误日志中的错误下方还显示

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).

【问题讨论】:

【参考方案1】:

您可以尝试遵循bug 277242中提到的各种建议

还要检查你的 eclipse.ini:

更一般地说,当我们无法读取“-startup”时,您看到的错误可能会发生,因为我们使用它来定位 install.area。

根据 cmets 中 Jelle van Geuns 的建议(并由 Halfstop 确认):

我发现一个 MacOS 有两个文件夹(MacOS 和 Eclipse),有两组独立的配置文件。 每个插件子文件夹中都有一个“org.eclipse.equinox.launcher”启动 jar,但版本略有不同。

Eclipse 可执行文件位于 MacOS 文件夹中。 但是eclipse.ini 设置为在Eclipse/plugins 下查找启动jar,但版本错误。

对我有用的解决方案是将startup.jar 的两个版本复制到两个插件子文件夹中。

Halfstop 确认:

我将 Eclipse 中的所有内容复制到 MacOS 目录中,这解决了它。

【讨论】:

这个错误没有提到“-startup”和您分配的值之间的空格会导致“-startup”无法正确读取的事实。我的 eclipse.ini 中已经有了“-startup”,但值在同一行。将值放在新行上为我解决了这个问题。 我发现一个MacOS有两个文件夹(MacOS和Eclipse)有两组独立的配置文件。每个插件子文件夹中都有一个“org.eclipse.equinox.launcher”启动 jar,但版本略有不同。 Eclipse 可执行文件位于 MacOS 文件夹中。但是那里的 eclipse.ini 设置为在 Eclipse/plugins 下查找启动 jar,但版本错误。对我有用的解决方案是将两个版本的启动 jar 复制到两个插件子文件夹中。 对我来说,就像@JellevanGeuns 所说,我有一个 MacOS 和 Eclipse 目录。我将 Eclipse 中的所有内容复制到 MacOS 目录中,这解决了它。 @Halfstop 我通常避免对现有的 Eclipse 实例进行任何升级:我只是在新文件夹中安装新的 Eclipse,并使用新的专用工作区。 @Halfstop 我理解这种精神和希望;)但是......不。【参考方案2】:

我今天刚遇到这个问题。 VonC et al 提供的答案有助于定位问题,但并没有完全解决。

在我的例子中,MacOS/eclipse.ini 内的-startup 中指定的位置错误地位于../Eclipse/plugins 文件夹中,而不是../MacOS/plugins 文件夹中。

我更正了路径,错误消失了。

【讨论】:

很好的收获(除了我 11 岁以上的答案)。赞成。【参考方案3】:

尝试chown -R your_user_name:your_user_name /path/to/eclipe

【讨论】:

【参考方案4】:

尝试编辑 Eclipse/configuration/config.ini.

确保osgi.instance.area.default= 值是正确的工作区。这对我有用。

【讨论】:

【参考方案5】:

我不确定上述答案是否足以解决此问题。我发现,对于我们的一些 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)

发生这种情况的原因(我怀疑)是配置文件的实际文件名与延迟加载程序的绝对名称进行了比较。在我的情况下,主目录是一个符号链接,所以这两个名称不匹配。解决方案是编辑 eclipse.ini(或您的任何名称)并确保引用 eclipse 主目录的所有路径都是完全合格的,并且不依赖于符号链接。

【讨论】:

当您使用 p2.director 安装插件并使用相对路径 bugs.eclipse.org/bugs/show_bug.cgi?id=549150 指定 -destination 时也会发生此问题

以上是关于“加载机械手时出错”的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向类加载器 ClassLoader ( 启动类加载器 | 扩展类加载器 | 应用类加载器 | 类加载的双亲委托机制 )

类加载器

类加载机制

类加载器和双亲委派

jpa 设置懒加载怎么手动加载

图片懒加载和预加载