Closed AdityaPadhy closed 1 month ago
Are you really seeing "~/.jbang/bin/jbang" in the error?
Asking as ~ should not be in there.
Same here, jbang installed by sdkman, working fine. But same error when trying to create script in IDEA. I get full path of my $HOME in error message by the way.
@ledinscak @AdityaPadhy I added sdkman auto detection. Could you install attachment and have a test?
Got the pr/branch so can build it myself rather than running arbitrary zips?
And shouldn't need custom sdkman detection should we ? Should just search the PATH and it shouldn't matter what installed it ?
After installing the zip i have this error:
java.lang.NullPointerException at dev.jbang.idea.actions.CreateFromTemplateAction.actionPerformed(CreateFromTemplateAction.kt:68) at com.intellij.openapi.actionSystem.ex.ActionUtil.doPerformActionOrShowPopup(ActionUtil.java:315) at com.intellij.openapi.actionSystem.ex.ActionUtil.lambda$performActionDumbAwareWithCallbacks$4(ActionUtil.java:294) at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareWithCallbacks(ActionUtil.java:337) at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAwareWithCallbacks(ActionUtil.java:294) at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$performAction$4(ActionMenuItem.java:293) at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:227) at com.intellij.openapi.actionSystem.impl.ActionMenuItem.performAction(ActionMenuItem.java:286) at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$new$1(ActionMenuItem.java:78) at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:209) at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:21) at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:191) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:881) at com.intellij.openapi.application.impl.ApplicationImpl$3.run(ApplicationImpl.java:513) at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:75) at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:118) at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:42) at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:779) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:730) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:724) 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:749) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:918) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:766) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:450) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:791) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:449) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105) at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:624) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:447) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:881) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:493) 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)
@AdityaPadhy Failed to execute jbang init --template hello --force Demo.java
. Could you see the Init from JBang templates
dialog? and what are your template name and Script name? Thanks.
@linux-china can you push the proposed changes to a Pull request ? I think we really should simplify the jbang lookup to purely be in JBANG_HOME, PATH and ~/.jbang in that order and nothing else.
should not be there a setting just like maven home in intellij preferences, it should be easy to override as per need.
Yes. That too. My point is that we should make it pick up "safe jbang" locations so it will just work for most cases but shouldn't be trying to guess which if possible multiple jbang sdkman installations user wants to use.
Now the plugin supports JBANG_HOME env variable, and you can set up JBang install directory. Please refer https://github.com/jbangdev/jbang-idea/issues/66
same error here, also installed via SDKMAN
idea details:
IntelliJ IDEA 2024.2.1 (Ultimate Edition)
Build #IU-242.21829.142, built on August 28, 2024
Linux 6.8.0-41-generic
Non-Bundled Plugins:
dev.jbang.intellij.JBangPlugin (0.24.6)
Current Desktop: XFCE
jbang details:
✔ swift3:~> jbang --version
0.117.1
✔ swift3:~> type jbang
jbang is hashed (/home/msangel/.sdkman/candidates/jbang/current/bin/jbang)
✔ swift3:~> echo $JBANG_HOME
/home/msangel/.sdkman/candidates/jbang/current
✔ swift3:~>
But still error:
Found the cause:
Still not see other way of fixing it other then run idea only from terminal...
@msangel I will take a look, maybe we can skip jbang script invoke and call java directly.
Calling directly with Java does not make sense to me. If you have jbang.jar located to call with java directly you also have the corresponding jbang script which you will need as it does the actual proper execution and handle piping and command line escaping and other important aspects.
The plugin should simply look in default locations by default AND allow user to specify explicit location for the cases where user doesn't run with jbang etc. configured in its global environment.
Upviting comment above. First it should try default location, then try sdkman location (that is also static and constant and should cover problem case we have and should be fast to implement), then simply ask for explicit plugin option where user might specify location.
@maxandersen Is it possible to attach jbang.jar for the plugin? Now jbang.jar is just 7.3M
Imo Just ask for location if not found in path, env nor default location - (sdkman is not a valid default; anymore than brew, choco etc) but can suggest it as the configured location.
Also offer to download it like maven/Gradle plugins and having default does - jbang has a default download and install location. i don't see an apparent advantage to bundle it and have it go out of date.
I installed jbang with sdk man, by default it is installed in
~/.sdkman/candidates/jbang/current
Than i installed jbang intellij idea plugin. I tried both community v2022.2.2 and ultimate v2022.2.1
Whenever i try to do file -> new -> jbang script, i get this error:
Could not execute [~/.jbang/bin/jbang, template, list] with environment {NO_COLOR=true}. Error=2, No such file or directory
Note: my jbang installation is working fine, i can run jbang files from command line.
in vscode there an option to set as jbang home, probably that kind of setting would be required. Could you please check.