gpt4 book ai didi

java - 使用 bndtools 启动 Eclipse 3.x RCP 应用程序

转载 作者:行者123 更新时间:2023-12-02 13:09:04 26 4
gpt4 key购买 nike

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

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

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

因为我没有看到 RCP 加载(我们有一个 RCP 插件,它扩展了 IApplication 接口(interface),并且我们的项目结构仍然基于 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,并且使用它的 bundle 也被标记为STRTD,而大多数其他 bundle 都是标记为 ACTIV,我认为这也是问题的一部分。我尝试通过包含一行来启动多个 bundle (以下是其他示例)来强制 bundle 启动,但遇到了问题,控制台将错误指出无法加载或找到 org.eclipse.core.runtime 的主类 当尝试将其包含在激活的 bundle 列表中时。

Google 搜索(甚至 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 ,尝试激活该插件也会导致无法找到主类错误。该激活器似乎没有启动,因为我将其设置为打印到控制台,但没有打印任何内容。我认为由于 bundle 处于 STRTD 状态,因此它没有启动。

如有任何帮助,我们将不胜感激。

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

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

最佳答案

以下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‌​。这是(除了存储库中演示的 Aspect 内容之外)使用 bnd 成功启动 Eclipse 应用程序的最小 bundle 集。

关于java - 使用 bndtools 启动 Eclipse 3.x RCP 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44031044/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com