3

我需要以某种方式获取正在运行的 Eclipse 4 应用程序的命令行参数。我正在开发一个基于 Eclipse 4 RCP 的小型应用程序,但我认为,这个问题更常见。我无法找到,如何从命令行参数的插件的产品代码中获取,应用程序已被执行。

我需要使用自定义命令行参数将信息传递给我的代码。有人知道提示吗?

4

2 回答 2

5

由于 E4 使用 Equinox 作为运行时,您可以使用 Platform 类来获取应用程序参数。

Platform.getApplicationArgs()

请参阅 Javadoc: http ://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Findex.html

于 2013-07-30T07:49:29.090 回答
4

我懂了。它不是那么直观,但它对我有用。有一个实现IApplicationContext接口的实例。(接口取决于org.eclipse.equinox.app.) 实例可以通过注入机制访问。该方法getArguments()返回一个地图。但它不返回某些命令行参数及其值的映射。它返回一些map,它在key下"application.args"存储了一个数组。示例:

@PostConstruct
public void createControls(Composite parent, HtmlEditorService editorService, IApplicationContext iac) {
    System.out.println(iac.getArguments().get("application.args").getClass().getCanonicalName());
    ...
}

然后打印出来java.lang.String[]。但是,该数组仅包含我的自定义参数,而不是所有参数。幸运的是,这对我来说并不重要。我只需要获取我的自定义参数。

插件激活器的附加提示

public class Aktivator implements BundleActivator {
    @Override
    public void start(BundleContext context) throws Exception {
        ServiceReference<?> ser = context.getServiceReference(IApplicationContext.class);
        IApplicationContext iac = (IApplicationContext)context.getService(ser);
        System.out.println(iac.getArguments().get("application.args").getClass().getCanonicalName());
    }

    @Override
    public void stop(BundleContext context) throws Exception {
    }
}
于 2013-07-29T09:01:36.563 回答