我编写了一个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类方法。
答案 0 :(得分:2)
一种方法是创建自己的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");
}
}
从这个屏幕截图中可以看出,"我想要的默认值"默认情况下出现在我的启动配置中: