“加载机械手时出错”
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 ( 启动类加载器 | 扩展类加载器 | 应用类加载器 | 类加载的双亲委托机制 )