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

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

我正在编写一个 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 是:

Initializes the given launch configuration with default values for this tab. This method is called when a new launch configuration is created such that the configuration can be initialized with meaningful values. This method may be called before this tab's control is created.

例如:

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

正如您从此屏幕截图中看到的,默认情况下,“我想要的默认值”出现在我的启动配置中:

vmargs

关于java - Eclipse 插件如何以编程方式传递 Java VM 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33719796/

相关文章:

java - 如何在maven pom.xml中使用自定义插件?

eclipse - 无法访问页面 eclipse

java - Eclipse添加插件开发

java - Apache Camel 测试

java - Tomee 嵌入式适配器 + Arquillian + Jax-RS - 测试 Jaas

java - 在 Java 中使用 NuSMV 作为模型检查器

java - 如何在 JFace 向导中迭代页面

eclipse - Apache Tomcat 启动错误

java - 在运行时将 jars 添加到 Eclipse 插件

eclipse-plugin - 创建类似 GUI 的网格(类似于 Microsoft excel 电子表格)