我正在运行交互式GroovyShell,在我的机器上启动需要分钟
使用groovy
或groovyclient
和groovyserver
运行简单脚本需要可接受的时间(最多几秒),但在运行groovysh
后,光标开始闪烁。。。足够长的时间让我泡茶,写下这个问题,并在推特上咆哮(仍然没有提示写任何代码)
尝试使用以下配置
- Groovy版本:2.3.4 JVM:1.7.0_03供应商:Oracle Corporation操作系统:Windows 7
- Groovy版本:2.3.4 JVM:1.8.0_20供应商:Oracle Corporation操作系统:Windows 7
这是完全一样的。
我真的希望能够在REPL风格中使用它。有人面临并解决过类似的问题吗?你能为这份工作推荐一种不同的工具吗?
正如评论中所建议的那样,我运行groovysh -d -v
来启用调试和详细输出,希望能看到什么需要这么长时间。
groovysh -d -v
的输出
DEBUG [org.codehaus.groovy.tools.shell.BufferManager] Created new buffer with index: 0
DEBUG [org.codehaus.groovy.tools.shell.BufferManager] Buffers reset
DEBUG [org.codehaus.groovy.tools.shell.Parser] Using parser flavor: rigid
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: ?
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :help
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :quit
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :exit
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: import
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :display
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :clear
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :show
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :inspect
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :purge
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :edit
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: .
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :load
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :save
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :record
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :history
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :alias
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :set
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :register
DEBUG [org.codehaus.groovy.tools.shell.CommandRegistry] Registered command: :doc
在很长一段时间内,没有进一步的输出,然后在几秒钟内全部休息:
DEBUG [org.codehaus.groovy.tools.shell.Groovysh] Terminal (jline.AnsiWindowsTerminal@66f57048)
DEBUG [org.codehaus.groovy.tools.shell.Groovysh] Supported: true
DEBUG [org.codehaus.groovy.tools.shell.Groovysh] ECHO: (enabled: false)
DEBUG [org.codehaus.groovy.tools.shell.Groovysh] H x W: 41 x 169
DEBUG [org.codehaus.groovy.tools.shell.Groovysh] ANSI: true
DEBUG [org.codehaus.groovy.tools.shell.Groovysh] Direct: true
DEBUG [org.codehaus.groovy.tools.shell.InteractiveShellRunner] Using history file: C:UsersTomek.groovygroovysh.history
Groovy Shell (2.3.4, JVM: 1.8.0_20)
Type ':help' or ':h' for help.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[1] for command: :help
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[2] for command: ?
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[3] for command: :exit
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[4] for command: :quit
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[5] for command: import
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[6] for command: :display
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[7] for command: :clear
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[8] for command: :show
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[9] for command: :inspect
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[10] for command: :purge
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[11] for command: :edit
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[12] for command: :load
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[13] for command: .
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[14] for command: :save
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[15] for command: :record
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[16] for command: :history
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[17] for command: :alias
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[18] for command: :set
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[19] for command: :register
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Added completer[20] for command: :doc
DEBUG [org.codehaus.groovy.tools.shell.CommandsMultiCompleter] Refreshing the completer list
DEBUG [org.codehaus.groovy.tools.shell.InteractiveShellRunner] Running
groovy:000>
7年后。。。好吧,这是另一个答案建议。我遇到了类似的问题,并进行了调查,发现在启动时,groovysh试图通过调用PackageHelperImpl来解析类。这里的问题是它递归地扫描所有的子目录。因此,groovysh启动速度极慢的一个原因是,在您尝试启动它的位置下面有一个巨大的文件层次结构。要测试这一点,请尝试在没有子目录的文件夹中完全相同地启动它。
它可能是内存,确保没有java应用程序首先运行(当两个java应用程序在窗口中争夺内存时,java的表现非常糟糕——这是一个彻底的系统杀手),但如果是这样的话,我认为groovy的加载也会很慢。
另一种可能性是,您的系统可能在加载JLine dll时遇到问题。要测试此尝试:
Groovysh --terminal=false
它将避免加载JLine——如果没有JLine,你将无法进行上/下/选项卡处理,因此你不想以这种方式运行,但如果你知道这是你的问题,你应该能够很容易地在网上找到一些东西来告诉你如何修复它。