2

インタラクティブなGroovy Shellを実行していますが、自分のマシンで起動するのに文字通り数分かかります (Intel i5 プロセッサと 4 GB の RAM を搭載した Windows 7 ラップトップなので、古いコンピューターではなく、中途半端なコンピューターです)。

groovyor groovyclientandを使用して単純なスクリプトを実行するにgroovyserverは、許容できる時間 (トップで数秒) がかかりますが、実行後groovysh、カーソルが点滅し始めます... お茶を飲むのに十分な時間、この質問を書いて、Twitter でこれについて暴言を吐きます (そして、まだコードを書くプロンプトはありません)

次の構成でこれを試しました

  • Groovy バージョン: 2.3.4 JVM: 1.7.0_03 ベンダー: Oracle Corporation OS: Windows 7
  • Groovy バージョン: 2.3.4 JVM: 1.8.0_20 ベン​​ダー: Oracle Corporation OS: 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 の起動が非常に遅い理由の 1 つは、起動しようとした場所の下に巨大なファイル階層があることです。これをテストするには、まったく同じように起動してみますが、子ディレクトリのないフォルダーで起動してみてください。

于 2021-10-06T10:42:41.740 に答える
1

それはメモリである可能性があり、最初にJavaアプリが実行されていないことを確認してください(2つのJavaアプリがWindowsでメモリをめぐって争っている場合、Javaのパフォーマンスは恐ろしくなります-これはシステム全体のキラーです)が、その場合はgroovyのロードが遅くなると思いますそれも。

別の可能性として、システムで JLine dll のロードに問題がある可能性があります。これをテストするには、次を試してください。

Groovysh --terminal=false

JLine のロードを回避します。JLine がないと、アップ/ダウン/タブの処理が行われないため、そのように実行したくありませんが、これが問題であることがわかっている場合は、オンラインで何かを簡単に見つけることができるはずです。あなたはそれを修正する方法。

于 2014-11-20T17:37:35.603 に答える