Eclipse plugin 如何在Pax考试中使用启动参数启动Equinox应用程序?

Eclipse plugin 如何在Pax考试中使用启动参数启动Equinox应用程序?,eclipse-plugin,osgi,equinox,pax-exam,pax,Eclipse Plugin,Osgi,Equinox,Pax Exam,Pax,我想在Pax考试中测试我的OSGI应用程序,但从我的一个插件启动应用程序时遇到了一些问题 我使用Equinox,并且有一些Equinox特定的类扩展了org.eclipse.Equinox.app.iaapplication。然后可以在Eclipse应用程序启动器中选择这个类,它是第一个要运行的类(在我的例子中,它控制应用程序生命周期) 当我运行Pax考试测试时,所有捆绑包都已解决,但我的IApplication未启动 如何在Pax考试中运行此类应用程序 另外,我如何传递一些应用程序参数?我只看

我想在Pax考试中测试我的OSGI应用程序,但从我的一个插件启动应用程序时遇到了一些问题

我使用Equinox,并且有一些Equinox特定的类扩展了org.eclipse.Equinox.app.iaapplication。然后可以在Eclipse应用程序启动器中选择这个类,它是第一个要运行的类(在我的例子中,它控制应用程序生命周期)

当我运行Pax考试测试时,所有捆绑包都已解决,但我的IApplication未启动

如何在Pax考试中运行此类应用程序


另外,我如何传递一些应用程序参数?我只看到一些frameworkProperty(-F)和systemProperty(-D),但我需要一些常规的应用程序参数。

据我所知,IApplication不是equinox的一部分,而是eclipse平台的一部分。所以我认为它在pax考试中并没有得到直接支持。Pax考试只会启动OSGi框架,加载并启动您指定的捆绑包

因此,实现这一点的方法可能是加载负责应用程序启动的eclipse包。我不确定这将如何详细工作

当使用特定于eclipse的东西时,会降低应用程序的可移植性。那么,也许您可以通过纯OSGi基础设施实现同样的功能


或者您要测试的应用程序是EclipseRCP应用程序?在这种情况下,pax考试可能不是最好的考试工具。在这种情况下,一些UI测试框架会更好地匹配。(例如)

iApp是Equinox的一部分,它使用注册表来查找安装了什么。因此,除了在PAX中包含适当的JAR之外,您还需要确保至少启动声明性服务和扩展注册表包,否则将找不到IApplication内容

其次,没有调用EclipseStarter类的包,EclipseStarter类是处理主参数并将其传递给运行时的东西。因此,除非您自己这样做,否则您将发现应用程序根本无法运行

如果您专门启动Eclipse,您可能会找到一些特定于Eclipse的参数,将这些参数指定为Java系统属性:

例如,您可以指定-Dapplication.id=yourapp


您还可以尝试将eclipse.commands作为一个换行分隔的参数列表。

这是常规的非RCP-app。那么,您尝试使用IAApplication实现什么呢?也许我可以建议更换。这是一种要求,我相信原因是要生成所有漂亮的Eclipse启动器及其周围环境。那么我如何使用这个Eclipse启动程序来运行我的应用程序呢?从代码中,你可以将其称为主方法。请参阅和/或我的Eclipse书籍;-)但它不是在打开另一个osgi容器吗,在pax考试之外?因为我看到,它返回新的bundleContext。是的,这将打开一个新的OSGi框架。捆绑包上下文是您在系统上的句柄,因此您可以在包含框架中启动和停止捆绑包。