Ok, I see what you mean now. I don't use groovysh enough for that to be an issue for me, but I wonder if the issue is the same on Windows machines?
However, I see that the "inspect" command uses a Swing GUI and I suspect this is what is causing the issue. I also see that the "inspect" command is disabled if Java is running in "headless" mode. So a relatively simple work around is to set java.awt.headless=true in JAVA_OPTS before running groovysh. I.E. $> export JAVA_OPTS=-Djava.awt.headless=true $> groovysh -or- $> JAVA_OPTS=-Djava.awt.headless=true groovysh -or- $> alias gsh='JAVA_OPTS=-Djava.awt.headless=true groovysh' $> gsh Now the applet is not launched and doesn't steal the focus away from the terminal window. However, I haven't tested the above (other to ensure the applet isn't started) so I don't know what else might be affected. Hope this helps, - Keith > On Oct 15, 2018, at 4:22 PM, Tzu-Li Chen <wander4...@gmail.com> wrote: > > 1.png > <https://drive.google.com/file/d/1R8fj07vPRwtcazXoLIsFw4XcyEGqgw-M/view?usp=drive_web> > 2.png > <https://drive.google.com/file/d/173hrjKQ7fGqiWBYXEf--Vlz3EnIeBiYO/view?usp=drive_web> > diag.png > <https://drive.google.com/file/d/1ZoNPAnFWgqxtZwRehrQJqnR7M8AcdmcK/view?usp=drive_web> > Hi Keith, > > Thanks for your reply! I think I know `groovy` command and now I exactly > suffer from `groovysh`. Let me try to speak it clearly. > > (on macOS) > 1. I open a terminal. > 2. Type "groovysh" and <CR> > 3. A new window looks like a Java applet, named "Groovy Shell" launched, and > the focus switch to it. > 4. I switch the focus back to the terminal, and start to interact with REPL. > > What I am suffering is 3 and 4, each time I want to interact with REPL I have > to switch the focus. Think about `jshell` or `python`, the REPL is of course > a process, but not another window and even force switch the focus. > > Also photos in attach links, please pay attention to the focus is switched > from 1 to 2. > > Best, > tison. > > > Keith Suderman <suder...@anc.org <mailto:suder...@anc.org>> 于2018年10月15日周一 > 下午10:44写道: > Hi Tison, > > I am not sure what you are asking... groovysh is the "Groovy Shell" so you > should see a terminal window named "GroovyShell" launched that allows you to > execute Groovy commands interactively. This is the expected behaviour. Or > are you just pointing out the exception when quitting groovysh? How did you > kill groovysh? With the Unix `kill` command (or Windows equivalent) or using > one of the "exit" commands in the shell itself (:exit, :x, etc)? > > I suspect you may simply want the `groovy` command that you can use to run > Groovy scripts/programs. > > $ echo "println 'hello world'" > test.groovy > $ cat test.groovy > println 'hello world' > $ groovy test.groovy > hello world > > Hope this helps, > Keith > >> On Oct 11, 2018, at 10:54 PM, Tzu-Li Chen <wander4...@gmail.com >> <mailto:wander4...@gmail.com>> wrote: >> >> Hi Groovy community, >> >> I am new to Groovy and when running `groovysh` with "3.0.0-alpha-3, JVM: >> 1.8.0_171" on macOS, I see a, hmm, Java monitor(?), named "GroovyShell" >> launched. >> >> If I kill it, process `groovysh` quit with exception below. I'd like to know >> if we can suppress the launch of "GroovyShell" process. It switch the focus >> of cursor and quite annoying for me. >> >> Best, >> tison. >> >> [printStackTrace]: >> >> ➜ ~ groovysh >> Groovy Shell (3.0.0-alpha-3, JVM: 1.8.0_171) >> Type ':help' or ':h' for help. >> ------------------------------------------------------------------------------- >> groovy:000> 2018-10-12 10:51:09.084 java[34387:1479007] >> java.lang.SecurityException: Use of System.exit() is forbidden! >> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) >> at >> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) >> at >> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) >> at java.lang.reflect.Constructor.newInstance(Constructor.java:423) >> at >> org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83) >> at >> org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105) >> at >> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59) >> at >> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:238) >> at >> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:250) >> at >> org.codehaus.groovy.tools.shell.util.NoExitSecurityManager.checkExit(NoExitSecurityManager.groovy:51) >> at java.lang.Runtime.exit(Runtime.java:107) >> at java.lang.System.exit(System.java:971) >> at >> com.apple.eawt._AppEventHandler.performQuit(_AppEventHandler.java:145) >> at com.apple.eawt.QuitResponse.performQuit(QuitResponse.java:51) >> at >> com.apple.eawt._AppEventHandler$_QuitDispatcher.performDefaultAction(_AppEventHandler.java:390) >> at >> com.apple.eawt._AppEventHandler$_AppEventDispatcher.dispatch(_AppEventHandler.java:512) >> at >> com.apple.eawt._AppEventHandler.handleNativeNotification(_AppEventHandler.java:202) >> > > > > ---------------------- > Keith Suderman > Research Associate > Department of Computer Science > Vassar College, Poughkeepsie NY > suder...@cs.vassar.edu <mailto:suder...@cs.vassar.edu> > > > > ---------------------- Keith Suderman Research Associate Department of Computer Science Vassar College, Poughkeepsie NY suder...@cs.vassar.edu