【问题标题】:Cant't Get Equinox Weaving to Work in Installable Feature无法让 Equinox Weaving 在可安装功能中工作
【发布时间】:2016-04-18 20:25:14
【问题描述】:

我有一个在运行时使用org.eclipsse.equinoix.weaving.hook 进行二进制编织的包。当我将它打包为一个独立的应用程序时,它可以工作,该应用程序使用默认启动级别执行 config.ini 中指定的编织。

但是,我还使用我的插件创建了一个可安装的功能。当我将该功能安装到 Eclipse IDE 中时,启动 IDE 时不会发生编织。使用 -console 启动 IDE 并查看包状态,我看到我的编织包的状态为 STARTING。它所依赖的所有捆绑包都具有状态 ACTIVE。如果我从 OSGI 控制台手动启动我的编织包,则编织将从那时起工作。即使随后启动它也可以工作,而无需在 OSGI 控制台上手动启动它。但是,如果我重新安装该功能,那么我必须在 OSGI 控制台上手动启动一次捆绑软件才能正常工作。

我应该如何配置应用程序,以便在不干预 OSGI 控制台的情况下进行编织?我尝试为我的编织包和org.eclipse.equinox.weaving.hook 包设置不同的开始级别,但这没有帮助。

【问题讨论】:

    标签: eclipse-rcp equinox load-time-weaving


    【解决方案1】:

    你知道这里的描述吗Equinox Aspects – Quick-start guide 最重要的部分,我过去偶然发现,是编织束的共同定位。如果您安装您的功能,您必须确保系统捆绑包org.eclipse.osgi 和捆绑包org.eclipse.equinox.weaving.hook 必须位于同一目录中(位于同一位置)。 并且您应该检查包 org.eclipse.equinox.weaving.aspectj 是否以启动级别 1 启动。

    【讨论】:

    • 是的,我查看了快速入门页面。我在插件目录中有系统包和org.eclipse.equinox.weaving.hook。我尝试将org.eclipse.equinox.weaving.aspectj 的起始级别设置为 1(使用简单的配置器,所以我编辑了 bundles.info),但没有效果。我不明白的一件事是,在我的独立应用程序中,plugins 文件夹中没有org.eclipse.equinox.weaving.hookorg.eclipse.equinox.wweaving.aspectj 捆绑包,但编织工作。在我安装我的功能的 Eclipse 实例中,这些插件就在那里。
    • 您使用的是哪个版本的 Eclipse 和 AspectJ?
    • 我正在使用 Mars.2 Release 4.5.2(最近下载的当前Eclipse for RCP and RAP Developers)。 org.eclipse.equinox.weaving.aspectj 插件版本为 1.0.300.I20130319-1000,org.aspectj.runtimeorg.aspectj.weaver 插件版本为 1.7.3.20130613144500-a。
    • 我有一些工作,但我不确定这是正确的解决方案。我有一个由org.eclipse.ui.startup 扩展注册的IStartup 实例,它调用我的编织包的激活器并让它注册它的编织钩。应用程序配置中的启动级别设置将捆绑包置于 STARTING 状态,但在有人访问它之前它不会变为 ACTIVE,对吧?如果是这样,那么早期启动是我所知道的在需要时使编织可用的最佳方式。但我想知道是否有办法同步进行,即保证在需要编织之前完成注册。
    • 我在这里有一些示例github.com/peterkir/example.aspectj,我将更新并尝试使用 Mars.2 和相应的 AJDT 版本运行它们。如果它正常工作,请回 Ping。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    相关资源
    最近更新 更多