eclipse-rcp - 您如何从 Eclipse Ganymede 升级到 Eclipse Galileo?

标签 eclipse-rcp

我编写了一个 RCP 应用程序,其中包含我使用 Ganymede 3.4.2 版创建的许多插件。我想开始使用伽利略。当我尝试从我使用 Ganymede 创建的工作区执行我的 RCP 应用程序时,我收到很多如下错误:

!SESSION 2009-09-09 10:41:33.907 -------------------------------------- ---------
eclipse.buildId=未知
java.version=1.6.0_12
java.vendor=Sun Microsystems Inc.
BootLoader 常量:OS=win32、ARCH=x86、WS=win32、NL=en_US
框架参数:-product com.bah.gs.arts.jekyll.product
命令行参数:-product com.bah.gs.arts.jekyll.product -data C:\Workspace/../runtime-jekyll.product -dev file:C:/Workspace/.metadata/.plugins/org。 eclipse.pde.core/jekyll.product/dev.properties -os win32 -ws win32 -arch x86

!ENTRY org.eclipse.equinox.app 0 0 2009-09-09 10:41:35.469
!MESSAGE 无法找到产品 com.bah.gs.arts.jekyll.product。

!ENTRY org.eclipse.osgi 2 0 2009-09-09 10:41:35.500
!MESSAGE 一个或多个包没有被解析,因为以下根约束没有被解析:
!SUBENTRY 1 org.eclipse.osgi 2 0 2009-09-09 10:41:35.500
!MESSAGE Bundle initial@reference:file:../../Common/plugins/org.eclipse.core.databinding_1.2.0.I20090604-2000.jar/未解决。
!SUBENTRY 2 org.eclipse.core.databinding 2 0 2009-09-09 10:41:35.500
!MESSAGE 缺少必需的包 org.eclipse.core.databinding.observable_[1.2.0,2.0.0)。
!SUBENTRY 2 org.eclipse.core.databinding 2 0 2009-09-09 10:41:35.500
!MESSAGE 缺少必需的包 org.eclipse.core.databinding.property_[1.2.0,2.0.0)。
!SUBENTRY 1 org.eclipse.osgi 2 0 2009-09-09 10:41:35.500
!MESSAGE Bundle initial@reference:file:../../Common/plugins/org.eclipse.jface.databinding_1.3.0.I20090525-2000.jar/未解决。
!SUBENTRY 2 org.eclipse.jface.databinding 2 0 2009-09-09 10:41:35.500
!MESSAGE 缺少必需的包 org.eclipse.core.databinding.property_[1.2.0,2.0.0)。
!SUBENTRY 2 org.eclipse.jface.databinding 2 0 2009-09-09 10:41:35.500
!MESSAGE 缺少必需的包 org.eclipse.core.databinding.observable_[1.2.0,2.0.0)。
!SUBENTRY 1 org.eclipse.osgi 2 0 2009-09-09 10:41:35.500
!MESSAGE Bundle initial@reference:file:../../Common/plugins/org.eclipse.ui.workbench_3.5.0.I20090603-2000.jar/未解决。
!SUBENTRY 2 org.eclipse.ui.workbench 2 0 2009-09-09 10:41:35.500
!MESSAGE 缺少必需的包 org.eclipse.core.databinding.property_[1.2.0,2.0.0)。
!SUBENTRY 2 org.eclipse.ui.workbench 2 0 2009-09-09 10:41:35.500
!MESSAGE 缺少必需的包 org.eclipse.core.databinding.observable_[1.2.0,2.0.0)。

为什么从一个 Eclipse 版本升级到下一个版本如此痛苦?

有没有系统的方法来解决上述问题?

是否有可用的“最佳实践”升级程序?

谢谢你的帮助。

在尝试了 VonC 的建议后,我仍然遇到一些问题。

这是 RCP 应用程序的 MANIFEST.MF 的约束部分:

Bundle-RequiredExecutionEnvironment:JavaSE-1.6
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.5.0";resolution:=optional;visibility:=reexport,
org.eclipse.ui;bundle-version="3.5.0";resolution:=optional;visibility:=reexport,
org.eclipse.core.expressions;bundle-version="3.4.100";resolution:=optional;visibility:=reexport

“visibility:=reexport”和“resolution:=optional”参数的意义是什么?

错误信息:

org.eclipse.core.databinding
缺少约束:Required-Bundle:org.elclipse.core.databinding.observable;require-version="[1.2.0.2.0.0]"
缺少约束:Required-Bundle:org.elclipse.core.databinding.property;require-version="[1.2.0.2.0.0]"

相同的两条消息:

org.eclipse.jface.databinding
org.eclipse.ui.workbench

最佳答案

您列出的错误表明 Galileo 没有看到 Ganymede 和您的程序正在使用的所有插件和库。很抱歉没有回答下面的问题。您的替代方案是摆弄 Galileo,直到它看到您所有的库和插件。

我要做的是并排安装 Galileo Ganymede 并一次移植一个应用程序。我假设您在 Windows 下工作,但我在此处列出的相同技术也适用于 Linux。

首先,理论上,从 Ganymede 升级到 Galileo 所需要做的就是在 Ganymede 上安装 Galileo。相信?好的。我也没有。因此,浏览 Ganymede 并注意您安装了哪些插件。然后在单独的目录中安装 Galileo。将新安装指向您的 Java VM。然后安装所有插件。您可以选择如何执行此操作。

最后,我会在您的项目中区分源代码和元数据。在 Galileo 下创建一个新项目并仅移动您的源。让伽利略重新构建您的元数据。

现在,下次如何避免所有这些痛苦:版本控制。 CVS、SVN、git……你用什么都无所谓。 Eclipse 有一个插件来支持所有这些。然后,在下一次升级时,只需将源代码导入到新 Eclipse 安装中的项目中即可。痛苦少得多,您将对来源有更多的控制权。

祝你好运。

关于eclipse-rcp - 您如何从 Eclipse Ganymede 升级到 Eclipse Galileo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1411605/

相关文章:

java - 如何以编程方式刷新 Eclipse View 或 RSE 文件子系统?

java - SWT 列表的 E4 数据绑定(bind)

java - OleControl 中的错误导致 JVM 完全崩溃 - 如何抑制?

java - JFace TreeViewer,当某些空文件夹被填充时如何通知树

eclipse-rcp - 从本地文件夹生成 p2 存储库,以便它可以在目标平台中使用

eclipse RCP : No application id has been found

java - Eclipse RCP 和 RAP 可定制表控件

java - 如何在 Eclipse RCP 插件中访问 logback.xml?

java - 在 Run Menu Item 中添加 Eclipse 默认菜单项

java - Constructor.newInstance() 在 JUnit 中与实际运行时的行为不同