gpt4 book ai didi

java - Intellij doExecute 不使用 DefaultProgramRunner 触发

转载 作者:行者123 更新时间:2023-12-02 09:15:26 27 4
gpt4 key购买 nike

我正在尝试为 Intellij 开发一个将使用调试器的插件。

我使用此存储库作为示例,但在我的例子中 doExecute 从未被执行。

https://github.com/mulesoft-labs/data-weave-intellij-plugin/blob/master/data-weave-plugin/src/main/java/org/mule/tooling/lang/dw/debug/WeaveDebuggerRunner.java

所以在我的文件中仅执行execute方法。知道为什么会这样吗?

更新:由于在plugin.xml中定义了ProgramRunner,并且我需要具有RunProfileState状态,所以我无法自行触发方法。

public class StudioScriptDebuggerRunner extends DefaultProgramRunner {
@NotNull
@Override
public String getRunnerId() {
return "StudioScriptDebuggerRunner";
}

@Override
public boolean canRun(@NotNull String executorId, @NotNull RunProfile profile) {
return executorId.equals(DefaultDebugExecutor.EXECUTOR_ID) && profile instanceof StudioDebuggerRunConfiguration;
}

@Override
protected RunContentDescriptor doExecute(@NotNull RunProfileState state, @NotNull ExecutionEnvironment env) throws ExecutionException {
FileDocumentManager.getInstance().saveAllDocuments();
return super.doExecute(state, env);
}

@Override
public void execute(@NotNull ExecutionEnvironment environment) throws ExecutionException {
FileDocumentManager.getInstance().saveAllDocuments();


Project[] projects = ProjectManager.getInstance().getOpenProjects();
StudioConfigurationProvider config = StudioConfigurationProvider.getInstance(projects[0]);

RunContentDescriptor descriptor = XDebuggerManager.getInstance(environment.getProject()).startSession(environment, new XDebugProcessStarter() {
@NotNull
public XDebugProcess start(@NotNull XDebugSession session) throws ExecutionException {
final SDAPIClient client = new SDAPIClient(config.getHostname(), config.getUsername(), config.getPassword(), "StudioDebuggerClient");
client.createSession();
return new StudioDebuggerProcess(session, client);
}
}).getRunContentDescriptor();

environment.setContentToReuse(descriptor);
}

}

插件.xml

<programRunner id="StudioScriptDebuggerRunner" implementation="com.binarysushi.studio.debugger.StudioScriptDebuggerRunner" order="last"/>

最佳答案

据我所知,调用“doExecute()”方法的唯一位置是在它自己的方法主体中。只要没有在其他地方调用它就不会执行。我会尝试将其合并到“doExecute()”方法之外的某个位置。

关于java - Intellij doExecute 不使用 DefaultProgramRunner 触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59028168/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com