如何从代码中获取Eclipse 4应用程序的命令行参数

时间:2013-07-29 08:20:07

标签: rcp e4

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

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

2 个答案:

答案 0 :(得分:4)

我已经知道了。它不是那么直观,但它对我有用。有一个实现IApplicationContext接口的实例。 (接口取决于org.eclipse.equinox.app。)实例可通过注入机制访问。方法getArguments()返回一个地图。但它不会返回某些命令行参数及其值的映射。它返回一些映射,它位于存储数组的键"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 {
    }
}

答案 1 :(得分:4)

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

Platform.getApplicationArgs()

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