【问题标题】:Force Eclipse (Helios) to use a newer version of SWT at application runtime强制 Eclipse (Helios) 在应用程序运行时使用更新版本的 SWT
【发布时间】:2012-12-07 05:59:19
【问题描述】:

我正在使用 Eclipse-Helios 开发一个 RCP 项目。

安装的SWT版本(在plugins目录下)是[org.eclipse.swt-win32-3.6.2, & org.eclipse.swt.jar]

我需要仅在 swt-3.8 中提供的新 API 功能。 (具体来说,我希望在打开之前为 SWT 颜色对话框设置自定义颜色。)

我已经从 SWT/Eclipse 下载站点 [http://download.eclipse.org/eclipse/downloads/drops/R-3.8-201206081200/#SWT] 下载了 3.8.1

  • SWT 下载不是插件(几个 jar、src.zip 和一些自述文件),所以我无法将它添加到我的“目标平台”(即使添加后它也不会显示为可用 jar “位置”中的包含目录)
  • 我找不到 SWT 的更新站点(或任何我可以获得更新版本插件的站点)

如果我将 swt.3.8.jar 添加到我的类路径(然后在项目构建路径中增加它的顺序优先级),我可以从我的代码中访问更新的 api 功能(以及查看源代码)。 然而,当我运行应用程序时,运行时似乎仍在使用旧的 SWT jar,因为在尝试访问新功能时出现未知方法错误。

问题:

  1. 是否有 SWT 存储库位置可供我使用 eclipse 安装管理器下载更新版本的 SWT?
  2. 如果没有,有没有办法强制运行时忽略旧版本(我假设通过 plugin.xml)?
  3. 有没有更好的方法来实现我想要做的事情?
  4. 目前在 helios plugins 目录下的两个 SWT jar 有什么区别(因为 3.8 下载只包含 win-32 版本)?

提前致谢。

【问题讨论】:

    标签: eclipse-plugin swt eclipse-rcp helios


    【解决方案1】:

    SWT 可在此处作为单独的插件下载:
    http://download.eclipse.org/eclipse/downloads/drops/R-3.8-201206081200/#SWT

    Eclipse 3.8 包含常规插件,包括 SWT(win32 特定的以及通用的“org.eclipse.swt_.jar”)。我目前使用的是 3.8 版本,它们显示为插件。

    我也有 Eclipse 3.6 (Helios),我能够使用“文件->导入->插件开发->插件和片段”向导导入 swt 插件。我刚刚指定了 eclipse 3.8 目录并可以将它们导入我的工作区。一旦导入,我当然可以将它们包含在运行时环境中。 Eclipse 应该会自动使用最新版本。

    【讨论】:

    • 如果我下载了刚刚的win32 SWT包(swt-3.8-win32-win32-x86.zip),然后使用你描述的方法,eclipse在下载的文件/目录中找不到插件。必须安装一个全新版本的 eclipse 只是为了使用一个库似乎有点过头了(为什么不直接使用新下载的 eclipse 版本呢?)。一定有更简单的方法来实现这一点?
    • 好的,如果您从上面的链接单独下载 SWT,它已经是一个 Eclipse 项目,您可以使用常规导入向导导入它。我下载了this link,解压到一个目录,使用File->Import->General->Existing Projects into Workspace向导直接导入项目。如果您已经拥有完整的 Eclipse 3.8,则另一种解决方案适用于这种情况。
    • 等一下...该项目不是插件。这是一个常规的 Java 项目。好的,试试这个,导入后右键项目,选择Configure->Convert to Plug-in Projects...,这样就变成插件了。拥有插件后,您可以修复版本(3.8),并且可能使用它来替换目标环境中的 SWT。让我知道这是否有效,或者我们可以尝试其他方法。奇怪的是项目还不是插件。
    • 感谢您的帮助 Waqas。我们快到了。如果我按照您的描述导入并转换项目。然后我将清单版本更新为 3.8.1。因此,这会从脚本编辑器中删除所有错误(表明 eclipse 编辑器正在引用较新的版本)。但是,当我运行它时,我看到了与以前相同的问题,NoSuchMethodError。我看不到任何方法可以用新的 3.8.1 版本替换“目标平台”中的旧 SWT。我也不能将它添加到我的 plugin.xml 中(不确定这是否会有所帮助,因为我目前看不到 SWT)。有什么想法吗?
    • 好的。所以这就是我最终要做的。下载 Juno,将三个 swt-plugin jar [swt, source, win32] 从 juno/pugins 复制到 Helios 安装下的文件夹 [helios-eclipse/dropins/swt]。打开helios:Window->preferences->plug-in development->Target Platform。在位置选项卡上,从目录添加新插件。浏览到新的 swt 文件夹,并添加所有三个 jar。在内容选项卡上,取消选择“旧”swt 插件,然后选择“新”插件。重建。一切都编译并正确运行。这似乎比必要的复杂一点,但它确实有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多