groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Keith Suderman <suder...@anc.org>
Subject Re: Start shell/REPL without launching java monitor?
Date Sat, 20 Oct 2018 15:48:38 GMT
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 <wander4096@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 <suderman@anc.org <mailto:suderman@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 <wander4096@gmail.com <mailto:wander4096@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
> suderman@cs.vassar.edu <mailto:suderman@cs.vassar.edu>
> 
> 
> 
> 



----------------------
Keith Suderman
Research Associate
Department of Computer Science
Vassar College, Poughkeepsie NY
suderman@cs.vassar.edu





Mime
View raw message