我正在编程一个Eclipse插件,它实际上是一个探查器,该探查器使用Java Agent jar文件来检测代码。

我已经编写了一个自定义启动配置,并为此定义了启动配置选项卡组。他们运行良好,并且正在运行本地Java项目。我希望我的插件在JavaArgumentsTab的vm参数中自动传递Java Agent 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类的任何方法。

最佳答案

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

setDefaults javadoc是:


  使用以下各项的默认值初始化给定的启动配置
  此标签。当新的启动配置是
  创建,以便可以有意义地初始化配置
  价值观。可以在此选项卡的控件被调用之前调用此方法。
  创建。


例如:

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");
    }
}


从此屏幕快照中可以看到,默认情况下,“我想要的默认值”出现在我的启动配置中:

java - Eclipse插件如何以编程方式传递Java VM参数-LMLPHP

07-24 18:57