【问题标题】:Launching an Eclipse 3.x RCP Application using bndtools使用 bndtools 启动 Eclipse 3.x RCP 应用程序
【发布时间】:2017-10-17 06:45:32
【问题描述】:

过去几天我一直在努力寻找解决问题的方法。我正在尝试使用 3.x 兼容层通过 bndrun 文件使用 bndtools 启动器启动 Eclipse RCP。

我知道解决方案涉及将 bndtools.runtime.eclipse.applauncher 放在运行包列表中以启动 E4 应用程序,并且有一些方法可以将 E3.x 应用程序迁移到 E4。我们希望暂时保持对富客户端平台的编程控制,因此迁移到 XMI 文件来布置 Workbench 目前并不理想。

我创建了一个使用 bndtools 构建的插件项目。据我所知,我已经包含了运行应用程序所需的所有包,并遵循了几个示例(顺便说一句,我发现的大多数 OSGI 示例都是基于控制台的)。

因为我没有看到 RCP 加载(我们有一个扩展 IApplication 接口的 RCP 插件,并且我们的项目结构仍然基于 Activator),所以我最初不知道为什么这不起作用,但是将 -osgi-console= 添加到运行属性确实提供了一些额外的信息:

使用 -runfw: org.eclipse.osgi

最后几行如下:

# framework=org.eclipse.osgi.launch.Equinox@59fa1d9b
# registered launcher with arguments for syncing
# will wait for a registered Runnable

此外,我用来测试的插件被标记为 STRTD 并且正在使用它的包也被标记为 STRTD 而大多数其他包被标记为标记为 ACTIV,我认为这也是问题的一部分。我试图通过包含一行来启动几个捆绑包(按照其他示例)来强制捆绑包开始,但遇到了控制台将错误说明 could not load or find main class for org.eclipse.core.runtime 尝试将其包含在激活的捆绑包列表中时。

谷歌搜索(甚至 Binging)似乎还没有产生解释如何设置 Eclipse 3.x 应用程序以使用 bndrun 文件运行的解决方案。我错过了什么?最近我尝试了以下属性:

-runproperties: \
 osgi.os=win32,\
 osgi.clean=true,\
 osgi.console=,\
 eclipse.product=org.eclipse.sdk.ide,\
 osgi.arch=x86_64,\
 osgi.ws=win32,\
 equinox.use.ds=true,\
 eclipse.application=org.eclipse.ui.ide.workbench

我假设如果我使用的实际测试包实际上会激活,我应该也能够找到 plugin.xml 文件中设置的应用程序 ID 并使用它。即使我在 bnd 文件中指定了 Bundle-Activator,尝试激活该插件也会导致 找不到主类 错误。该激活器似乎没有启动,因为我将其设置为打印到控制台并且没有打印任何内容。我假设由于捆绑包处于 STRTD 状态,因此它没有启动。

对此的任何帮助将不胜感激。

编辑: 作为更新,添加 org.apache.felix.gogo.runtimeorg.apache.felix.gogo.shell 确实导致我的测试插件的激活器启动。奇怪的是,它所依赖的插件从 STRTD 移到了 RSLVD

其他讨论表明我们可能必须使用 EclipseStarter 手动启动 Eclipse 实例?

【问题讨论】:

  • 我在这个Github repo 中使用带有Eclipse 3.8 的bndtools,在/cnf/eclipse_common_3.8/bndtools.runtime.eclipse.applaunch-0.1.0.jar 中使用了一个改编的bndtools.runtime.eclipse.applauncher,请参阅3.8 启动配置也包括在这里example.aspectj/example.aspectj.bnd.app/run/launch_org.eclipse.osgi_3.8.x.bndrun。这是(除了在 r​​epo 中演示的 Aspect 内容之外)成功启动 Eclipse 应用程序的最小捆绑包。
  • 非常感谢您的回复。您愿意将此作为答案,以便我可以将其标记为答案吗?我仍在进行修改,但弹出了我们使用的工作区选择对话框,所以我现在肯定正在取得进展。
  • Workbench 确实启动了。现在正在尝试显示视图!

标签: java eclipse osgi rcp bndtools


【解决方案1】:

以下Github repo 包含使用 bndtools 和 Eclipse 3.8 的示例。它在 /cnf/eclipse_common_3.8/bndtools.runtime.eclipse.applaunch-0‌​.1.0.jar 中使用了一个改编的 bndtools.runtime.eclipse.applauncher,请参阅 3.8 bnd 启动配置还包括这里的 example.aspectj/example.aspectj。 bnd.app/run/launch_org.eclip‌​se.osgi_3.8.x.bndrun‌​。这是(除了 repo 中演示的 Aspect 内容之外)使用 bnd 成功启动 Eclipse 应用程序的最小捆绑包。

【讨论】:

    猜你喜欢
    • 2016-05-30
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    相关资源
    最近更新 更多