我需要以某种方式获取正在运行的Eclipse 4应用程序的命令行参数。我正在研究基于Eclipse 4 RCP的小型应用程序,但我认为这个问题更常见。我无法找到,如何从一个产品的代码分别获得一个插件命令行argumnets,该应用程序已经执行过。
我需要使用自定义命令行参数将信息传递给我的代码。有人知道提示吗?
答案 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()