2

我正在运行交互式Groovy Shell,它实际上需要几分钟才能在我的机器上启动(一台配备 Intel i5 处理器和 4 GB RAM 的 Windows 7 笔记本电脑,所以不是一台古老的计算机,只是路中间的一台)

groovy使用or运行简单脚本groovyclientgroovyserver花费可接受的时间(最多几秒钟),但在运行groovysh光标后开始闪烁......足够长的时间让我泡茶,写下这个问题并在 Twitter 上咆哮(仍然没有提示写任何代码)

尝试使用以下配置

  • 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:\Users\Tomek\.groovy\groovysh.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>
4

2 回答 2

2

7年后……好吧,这是另一个答案建议。我有一个类似的问题并调查发现在启动时,groovysh 尝试通过调用PackageHelperImpl来解析类。这里的问题是它递归地扫描所有子目录。因此,groovysh 启动速度极慢的一个原因是您在尝试启动它的位置下有一个巨大的文件层次结构。要对此进行测试,请尝试以完全相同的方式启动它,但在没有子目录的文件夹中。

于 2021-10-06T10:42:41.740 回答
1

它可能是内存,确保没有 Java 应用程序首先运行(当 2 个 Java 应用程序在 Windows 中争夺内存时,Java 的表现非常糟糕——这完全是系统杀手),但如果是这种情况,我认为 groovy 会加载缓慢也。

另一种可能性是您的系统可能无法加载 JLine dll。要测试此尝试:

Groovysh --terminal=false

它将避免加载 JLine - 如果没有 JLine,您将无法进行 up/down/tab 处理,因此您不想以这种方式运行,但如果您知道这是您的问题,您应该可以很容易地找到在线说明你如何解决它。

于 2014-11-20T17:37:35.603 回答