我有以下代码:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationType;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.debug.ui.DebugUITools;
public class Main {
public static void main(String... strings) throws IOException {
try {
String path = "E:\\Java\\Projects\\.metadata\\.plugins\\org.eclipse.debug.core\\.launches\\MedicineFrame.launch";
ILaunchManager launchManager = DebugPlugin.getDefault()
.getLaunchManager();
ILaunchConfigurationType type = launchManager
.getLaunchConfigurationType(ILaunchManager.RUN_MODE);
ILaunchConfigurationWorkingCopy workingCopy = type.newInstance(
null, path);
workingCopy.setAttribute("PATH_MY", path);
ILaunchConfiguration configuration = workingCopy.doSave();
DebugUITools.launch(configuration, ILaunchManager.RUN_MODE);
} catch (CoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
实际上,我只想运行由绝对路径定义的文件中指定的启动配置。
我收到一个NPE,因为DebugPlugin.getDefault()返回null。我该怎么办?我发现了很多类似的示例,但是它们都没有讲述NPE,就像在我之前没有人知道它一样。
最佳答案
快速查看DebugPlugin code之后,我发现DebugPlugin#getDefault()
方法是fgDefaultPlugin
字段的简单获取方法,并默认返回此字段值null
。由于您将DebugPlugin#getDefault()
作为main
函数的第一个方法调用,因此合理的是它返回null
,因为先前未调用DebugPlugin#setDefault()
。
您不能从这样的主要方法运行Eclipse。您需要编写一个插件,并且可以从plugin方法内部进行访问。