我想创建 RunConfiguration,它将在集成终端及其提供中运行命令。我所说的“提供者”一词是指 powershell.exe 或 cmd.exe。我找到了如何使用 GlobalCommandLine 或 PtyCommandLine 运行命令行,但当我想使用 cmd.exe 或 powershell.exe 提供程序运行命令时,它会创建进程。我找到了奇怪的类 ShTerminalRunner 的新答案,但它使用位于 org.jetbrains.plugins.terminal 包中的 ShellTerminalWidget,我通过在 build.gradle.kts 文件中的插件中添加“终端”来访问那里:
plugins.set(listOf(
"terminal"
))
但是运行后我收到错误:
java.lang.NoClassDefFoundError: org/jetbrains/plugins/terminal/TerminalToolWindowManager
at code.sh.ShTerminalRunner.run(ShTerminalRunner.kt:29)
at code.sh.runconfig.FlowRunConfiguration$getState$1.startProcess(FlowRunConfiguration.kt:29)
at com.intellij.execution.configurations.CommandLineState.execute(CommandLineState.java:61)
at com.intellij.execution.runners.DefaultRunProgramRunner$execute$1.invoke(DefaultRunProgramRunner.kt:29)
at ... stack trace
Caused by: java.lang.ClassNotFoundException: org.jetbrains.plugins.terminal.TerminalToolWindowManager PluginClassLoader(plugin=PluginDescriptor(name=Pon, id=code.sh, descriptorPath=plugin.xml, path=~\Documents\IdeaProjects\Pon\build\idea-sandbox\plugins\Pon, version=1.0-SNAPSHOT, package=null, isBundled=false), packagePrefix=null, state=active)
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.kt:156)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
... 46 more
和往常一样,我的错误是由于疏忽造成的。我只是忘记将标签添加到plugin.xml,我从这里理解它
添加此标签后:
<depends>org.jetbrains.plugins.terminal</depends>