【问题标题】:How Eclipse Plugin can programmatically pass Java VM ArgumentsEclipse 插件如何以编程方式传递 Java VM 参数
【发布时间】:2015-11-15 12:43:32
【问题描述】:

我正在编写一个 Eclipse 插件,它实际上是一个使用 Java 代理 jar 文件检测代码的分析器。

我编写了一个自定义启动配置,并为此定义了启动配置选项卡组。他们工作正常并运行本地 Java 项目。我希望我的插件在 JavaArgumentsTab 的 vm 参数中自动传递 Java 代理 jar 文件,以便检测代码。

我的启动配置代码

public class MyJavaDelegate extends JavaLaunchDelegate
{
    @Override
    public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor)
            throws CoreException
    {
        super.launch(configuration, mode, launch, monitor);
        System.out.println("Custom Lanucher Launched");
    }
}

我的启动配置选项卡组代码

public class MyJavaTabGroup extends AbstractLaunchConfigurationTabGroup
{

    JavaMainTab jmTab;
    JavaArgumentsTab jaTab;
    JavaJRETab jjTab;
    CommonTab cTab;

    @Override
    public void createTabs(ILaunchConfigurationDialog dialog, String mode)
    {
        jmTab = new JavaMainTab();
        jaTab = new JavaArgumentsTab();
        jjTab = new JavaJRETab();
        cTab = new CommonTab();

        setTabs(new ILaunchConfigurationTab[] { jmTab , jaTab, jjTab, cTab });      
    }

}

由于 JavaArgumentsTab 采用 vm 参数,我正在尝试通过代码设置 vm 参数,但我没有找到允许我使用的 JavaArgumentsTab 类的任何方法。

【问题讨论】:

    标签: java eclipse eclipse-plugin eclipse-rcp jvm-arguments


    【解决方案1】:

    一种方法是创建您自己的JavaArgumentsTab 子类并覆盖setDefaults

    setDefaultsjavadoc 是:

    使用默认值初始化给定的启动配置 此选项卡。此方法在新的启动配置被调用时被调用 创建这样的配置可以用有意义的初始化 价值观。此方法可能在此选项卡的控件被调用之前被调用 已创建。

    例如:

    import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
    import org.eclipse.jdt.debug.ui.launchConfigurations.JavaArgumentsTab;
    import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
    
    public class CustomJavaArgumentsTab extends JavaArgumentsTab {
    
        @Override
        public void setDefaults(ILaunchConfigurationWorkingCopy config) {
            // start with the normal defaults for this tab...
            super.setDefaults(config);
            // ... then set/override them with what I want
            // ATTR_VM_ARGUMENTS is defaulted to null, provide my desired default
            config.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS, "my desired default");
        }
    }
    

    从这个截图可以看出,“我想要的默认值”默认出现在我的启动配置中:

    【讨论】:

      猜你喜欢
      • 2015-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2012-07-04
      相关资源
      最近更新 更多