Opening a new terminal tab via a Gateway plugin
I am using IntelliJ 2024.1 to develop a Plugin that should run on a hosted IDE via Gateway.
The Plugin should create a new Terminal tab and then execute a command in it.
I have the following code:
try {
var commandLine = new GeneralCommandLine($command);
commandLine.setCharset(StandardCharsets.UTF_8);
ShellTerminalWidget shellTerminalWidget = TerminalToolWindowManager.getInstance(project).createLocalShellWidget(".", "NewTab");
shellTerminalWidget.executeCommand(commandLine.getCommandLineString());
} catch (Exception e) {
// Handling error here;
}
When I debug this from inside the IntelliJ, it is working, but when I create a plugin from it and add that plugin to PhpStorm remotely via Gateway and try to use it, nothing is happening... I don't get the new terminal and I don't know what is going on.
I saw this Stack Overflow post: https://stackoverflow.com/questions/74343236/in-jetbrains-plugin-development-how-to-execute-command-in-the-terminal-from-plu which mentions using the following:
BackendTerminalManager.getInstance(project).shareTerminal(...)
However, I am not sure how to get it to work as I cannot find reference to the BackendTerminalManager
class.
Any ideas?
Please sign in to leave a comment.
java.lang.NoClassDefFoundError: org/jetbrains/plugins/terminal/TerminalToolWindowManager
at org.jetbrains.plugins.template.commondTools.ExecuteCommandAction.fun4(ExecuteCommandAction.kt:84)
at org.jetbrains.plugins.template.commondTools.ExecuteCommandAction.executeCommand(ExecuteCommandAction.kt:49)
at org.jetbrains.plugins.template.commondTools.ExecuteCommandAction.actionPerformed$lambda$1$lambda$0(ExecuteCommandAction.kt:39)
at com.intellij.util.concurrency.ContextRunnable.run(ContextRunnable.java:27)
at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:209)
at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:22)
at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:191)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:843)
at com.intellij.openapi.application.impl.ApplicationImpl$4.run(ApplicationImpl.java:463)
at com.intellij.openapi.application.impl.RwLockHolder.runWithEnabledImplicitRead(RwLockHolder.kt:75)
at com.intellij.openapi.application.impl.RwLockHolder.runWithImplicitRead(RwLockHolder.kt:67)
at com.intellij.openapi.application.impl.ApplicationImpl.runWithImplicitRead(ApplicationImpl.java:1436)
at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:82)
at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:124)
at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:44)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:792)
at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:733)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:761)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:695)
at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$12(IdeEventQueue.kt:589)
at com.intellij.openapi.application.impl.RwLockHolder.runWithoutImplicitRead(RwLockHolder.kt:44)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:589)
at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:72)
at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:355)
at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:354)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:793)
at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:354)
at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:349)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1014)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:106)
at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1014)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:349)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:848)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:391)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
Caused by: java.lang.ClassNotFoundException: org.jetbrains.plugins.terminal.TerminalToolWindowManager PluginClassLoader(plugin=PluginDescriptor(name=command-tools, id=org.jetbrains.plugins.template, descriptorPath=plugin.xml, path=~/Downloads/intellij-platform-plugin-template-main/build/idea-sandbox/IC-2023.3.8/plugins/FYCommandTools, version=2.0.2, 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)
... 44 more
Hello, bro. I have another issue. Can you help me? Thank you.
Environment:
intelliJPlatform
version: 2.1.0Configuration:
gradle.properties:
platformBundledPlugins = org.jetbrains.plugins.terminal