問題タブ [groovyshell]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - スクリプト内で Groovy 文字列を評価するにはどうすればよいですか?
基本的に、Groovy で CLI を作成しようとしています。JavaでJavaFX GUI全体をセットアップしており、groovyスクリプトを入力して、groovyスクリプト内でさまざまな機能を実行できるようにしたいと考えています。
たとえば、次のスクリプトがあるとします。
「meow();」と入力できるようにしたい Enter キーを押して、スクリプトを参照として使用して評価します。
使ってみました
しかし役に立たない。エラーが発生するだけです:
次のような他の標準関数を呼び出すことができます。
しかし、私は自分のメソッドを実行できません...どうすれば解決できますか?
groovy - 文字列からGroovyクラスにプロパティを追加
文字列からGroovyクラスにプロパティを動的に追加することは可能ですか?
たとえば、ユーザーに「HelloString」などの文字列を挿入するように依頼し、
プロパティ HelloString を既存の Groovy グラスに追加しますか?
groovy - groovyConole/groovysh のクラスパスに複数の jar を追加するには?
これを聞かなければならないのはばかげているように感じますが、groovyConsole と groovysh のクラスパスに複数の jar ファイルを追加できないようです。複数の jar ファイルをクラスパスに追加するにはどうすればよいですか? これが私が試したことです:
groovyConsole -cp ~/lib/compile/jar/mysql-connector-java-5.1.32.jar:~/lib/compile/jar/ojdbc6-11.2.0.3.jar
ただし、コンソールでこのコードを実行すると、次のようになります。
最初の jar ファイルである mysql jar ファイルはクラスローダーに追加されますが、2 番目の jar ファイルである oracle jar ファイルは追加されないことに注意してください。また、次のように -cp 引数を 2 回使用してみました。
しかし、それはエラーで失敗します。ドキュメントには、Java と同じように動作するという漠然としたヒント以外のガイダンスが著しく欠けています。したがって、最初の試みが箱から出してすぐにうまくいかなかったのはなぜですか。
また、[スクリプト] > [Jar(s) をクラス パスに追加] メニュー オプションを使用して groovyConsole を起動した後、Jar ファイルを追加しようとしましたが、jar ファイルは追加されません。
では、なぜこれがより単純な方法で機能しないのでしょうか?
performance - Groovy シェルの起動が非常に遅い
インタラクティブなGroovy Shellを実行していますが、自分のマシンで起動するのに文字通り数分かかります (Intel i5 プロセッサと 4 GB の RAM を搭載した Windows 7 ラップトップなので、古いコンピューターではなく、中途半端なコンピューターです)。
groovy
or groovyclient
andを使用して単純なスクリプトを実行するに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
非常に長い間、それ以上の出力はなく、残りは数秒で完了します。
groovy - groovysh でのクローズ エラー
groovysh
v2.3.6 を実行します。
このエラーはclosure
onの既知のバグgroovysh
ですか?
java - IntegerMetaClass を GroovyShell に動的に追加する
特定のコンテキストIntegerMetaClass
でのみカスタムを使用したいと思います。GroovyShell
その理由は、ランタイム全体を私の潜在的な 'disturbing' で汚染しないためIntegerMetaClass
です。
魔法のパッケージに IntegerMetaClass.java の実装を入れると、魔法のように機能しますgroovy.runtime.metaclass.java.lang
。しかし、中間の GroovyClassLoader に手動で追加しようとすると、機能しなくなります。
GroovyClassLoader
MetaClass を「解析」するだけでなく、やらなければならないことがありませんか? どこか他の ?
アップデート1:
上記のようIntegerMetaClass.minutes
に、Java ソースのクラスパスに直接配置すると、ルックアップが機能します。
更新 2:
可能ではあるが満足のいく解決策:
gcl.parseClass
呼び出しの直後に以下を追加
ただし、このソリューションでは、MetaClass ソースと元のターゲット クラスの間で一種の「マッピング」を維持して、より多くの機能をサポートする必要がありInteger
ます。
groovy - groovyshでインポートされたクラスからのものを参照する
ファイルがあるとしSomeThings.groovy
ます:
クラスパスで上記のファイルを使用して groovysh を開始し、次のようにします。
すべて良い。でも:
groovysh から参照するsomeVar
にはどうすればよいですか?someFunc