問題タブ [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.
groovy - GroovyShell() を使用して外部 groovy スクリプトからメソッドを追加する
別の Groovy スクリプト (external.groovy) からメソッドを呼び出す必要がある Groovy スクリプト (source.groovy) があります。問題は、external.groovy が存在しないライブラリをインポートするため、エラーが発生することです。次に例を示します。
ソース.groovy:
ここに external.groovy があります:
Source.groovy を実行すると、com.foo.doesnotexsist が存在しないため、エラーが発生します。method() 関数に影響を与えないため、存在しなくてもかまいません。method() 関数を呼び出す方法はありますか?
groovy - GroovyShell を使用したクラスの解析
外部の Groovy スクリプト内のクラス内でメソッドを実行する必要がある Groovy スクリプトがあります。外部の Groovy スクリプト内でメソッドを実行する方法を知っています。
しかし、メソッドがクラス内にある場合はどうなるでしょうか? これを試しましたが、エラーが発生しました。
java - GroovyScriptEngine が実行中の groovy スクリプトのインポートをロードできない
バックグラウンド :
私は最近 Groovy を使い始め、Eclipse ベースの製品内で顧客が独自の GUI 拡張機能を開発できるように、Eclipse プラグインに Groovy スクリプト エンジンを埋め込もうとしています。これは、codehaus の Web サイトで公開されているサクセス ストーリーと非常によく似ています。
問題
GroovyScriptEngine によって Eclipse プラグインから実行される groovy スクリプト (「main_eclipse.groovy」と呼びましょう) は、groovy クラス (「SwtGuiBuilder」) をロードしようとすると、次のエラーでスローします。
バグ!すでに反復している間に新しいソースをキューに入れています。キューに入れられたソースは「file:/home/nicolas/workspace/groovy-test/src/gui/SwtGuiBuilder.groovy」です
質問
誰かが同じ問題に遭遇しましたか? どうすれば修正できますか?どんな助けでも大歓迎です!
いくつかの観察:
GroovyScriptEngine Java オブジェクトの代わりに groovy インタープリターを使用する場合、SwtGuiBuilder クラスを問題なく使用できます (以下のスクリプト「main_groovy」を参照)。
SwtGuiBuilder クラスを含むファイルがスローされた例外に記載されているため、私の問題はクラスパスの問題ではないようです。
このエラー メッセージは、報告された 2 つの groovy バグ、GRECLIPSE-429 および GRECLIPSE-1037 で言及されています。技術的な詳細は完全にはわかりませんでしたが、これらのバグは、多くのクラスをロードするときのパフォーマンスの問題に関連しているようで、私の状況には関係ありません...
詳細
SampleView.java
ScriptConnector.java
main_eclipse.groovy
SwtGuiBuilder.groovy
main_groovy.groovy
スタックトレース
バグ!すでに反復している間に新しいソースをキューに入れています。キューに入れられたソースは、org.codehaus.groovy の org.codehaus.groovy.control.CompilationUnit.addSource(CompilationUnit.java:460) の「file:/home/nicolas/workspace/groovy-test/src/gui/SwtGuiBuilder.groovy」です。 .control.CompilationUnit.addSource(CompilationUnit.java:433) at groovy.util.GroovyScriptEngine$ScriptClassLoader$3.findClassNode(GroovyScriptEngine.java:195) at org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:124) org.codehaus.groovy.control.ResolveVisitor.resolveToOuter(ResolveVisitor.java:863) で org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:377) で org.codehaus.groovy.control.ResolveVisitor.visitClass (ResolveVisitor.java:1407) org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.
私の構成:
Linux Ubuntu 14.04 x86
グルーヴィーなバージョン: 2.3.2
JVM: 1.7.0_55
Eclipse ケプラー SR2 - ビルド 20140224-0627
Eclipse Groovy プラグイン v2.0.7
groovy - GroovyShell().parse パラメータを渡す
外部の Groovy スクリプトからクラスを解析する必要がある Groovy スクリプトがあります。パラメータを渡す方法がわかりません。これが機能するものです:
私が実行している Groovy スクリプトは、この行を使用して external.groovy から外部クラスを解析しています。
external.groovy は次のようになります。
できます。
私が抱えている問題は、パラメーターを外部メソッドに渡す方法が見つかりません。external.groovy は次のようになります。
実行中のスクリプトにパラメーターを追加するにはどうすればよいですか。
groovy - Eval または GroovyShell による実行中の遅延 GString 評価
監視システムの場合、ブール式で表されるカスタム チェックを評価する必要があります。たとえば、単純な疑似コード条件があります (より複雑になる可能性があります)。
可能であれば、ここで短絡評価を使用したいと思います。これにより、Web サービスが利用可能である (そして最初の条件が であるfalse
) 場合、2 番目の部分は評価されませfalse
ん。これにより、不要なメール サーバーへの接続 (およびその他の時間のかかる操作) を回避できます。
これが私が達成しようとしているものの例です:
出力は次のとおりです。
NoDowntimeEmailCheck().check()
最初の条件はすでに であるため、実行しないでくださいfalse
。私はもう試した:
GroovyShell
の代わりに使用Eval
check()
フィールドへのメソッドの変更と@Lazy
変換の適用${new WebserviceDownCheck().check()}
への変更(ここで${ -> new WebserviceDownCheck().check()}
見た)
(または) が既に実行されているGString
間に初期化できるようにする遅延メカニズムが必要なようです。怠け者のようなものかもしれません。Eval
GroovyShell
Binding
GroovyShell
カスタムの文字列評価ロジックを書かなくてもなんとかなるのだろうか?
java - Groovy Shell を使用したコードが埋め込まれたファイルの評価
私は最近、Web アプリケーションの使用を PHP から Java に移行した Web 開発者です。サーバーがGroovy Shellを介して評価するコンパイルされていないgroovyスクリプトを使用して簡単に拡張できる独自のサーバーアプリケーションを作成することになりました。foo.html.groovy
. 今日まで、それは驚異的に機能し、私は自分の結果を非常に誇りに思っています...しかし... PHPスクリプトから非常に欠けていることが1つあります。それは、アプリケーション内に実装したいことです。ファイル内のプログラミング言語コード。納得させるために見逃しているだけでなく、多くのprint
ステートメントを使用して html などを出力するのが急速に苦痛になっているため、見逃しています。言うまでもなく、Groovy は、ほとんどすべてがエスケープされていない限り、JavaScript コードでうまく機能しません。つまり、 . $ " '
.
PHP:
Ruby on Rails でさえ、.erb
ファイルでこのようなものを提供しています。さらに、Groovy の何かは次のようになると思います。
これが実装されているかどうか、またはエミュレートできるかどうかを誰かが知っているかどうかに興味がありますか? 私が最初にアプリケーションを開発したとき、正規表現式を使用して埋め込みコードを除外し、評価し、元に戻すことを試みましたが、これは 100% 完璧ではなく、コード エラーのデバッグは悪夢のようなものでした。列番号は決して正確ではありませんでした。Java 内で PHP をエミュレートする Quercus も使用してみましたが、そのプロジェクトは非常に古く、ドキュメントやヘルプを見つけるのに苦労しました。したがって、ソリューションへのアイデアや方向性は大歓迎です。
参考として私が行ったことに興味がある人は、GitHub の私のコード リポジトリを参照してください。
助けてくれてありがとう。
groovy - groovy スクリプト エラー
私はgroovyの初心者です。コマンドプロンプト(私はIDEを使用していません)で、次のように入力しました:(環境変数の設定に問題はありません)
エラー :
data.txt はそのディレクトリにあります (TAB キーを使用して検証)
エラーがスローされる理由がわからない????
[data.txt には、次の形式の生データが含まれています]
1
2
3
4