問題タブ [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.

0 投票する
1 に答える
585 参照

groovy - GroovyShell() を使用して外部 groovy スクリプトからメソッドを追加する

別の Groovy スクリプト (external.groovy) からメソッドを呼び出す必要がある Groovy スクリプト (source.groovy) があります。問題は、external.groovy が存在しないライブラリをインポートするため、エラーが発生することです。次に例を示します。

ソース.groovy:

ここに external.groovy があります:

Source.groovy を実行すると、com.foo.doesnotexsist が存在しないため、エラーが発生します。method() 関数に影響を与えないため、存在しなくてもかまいません。method() 関数を呼び出す方法はありますか?

0 投票する
1 に答える
876 参照

groovy - GroovyShell を使用したクラスの解析

外部の Groovy スクリプト内のクラス内でメソッドを実行する必要がある Groovy スクリプトがあります。外部の Groovy スクリプト内でメソッドを実行する方法を知っています。

しかし、メソッドがクラス内にある場合はどうなるでしょうか? これを試しましたが、エラーが発生しました。

0 投票する
1 に答える
1677 参照

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

0 投票する
1 に答える
4022 参照

groovy - GroovyShell().parse パラメータを渡す

外部の Groovy スクリプトからクラスを解析する必要がある Groovy スクリプトがあります。パラメータを渡す方法がわかりません。これが機能するものです:

私が実行している Groovy スクリプトは、この行を使用して external.groovy から外部クラスを解析しています。

external.groovy は次のようになります。

できます。

私が抱えている問題は、パラメーターを外部メソッドに渡す方法が見つかりません。external.groovy は次のようになります。

実行中のスクリプトにパラメーターを追加するにはどうすればよいですか。

0 投票する
1 に答える
670 参照

groovy - Eval または GroovyShell による実行中の遅延 GString 評価

監視システムの場合、ブール式で表されるカスタム チェックを評価する必要があります。たとえば、単純な疑似コード条件があります (より複雑になる可能性があります)。

可能であれば、ここで短絡評価を使用したいと思います。これにより、Web サービスが利用可能である (そして最初の条件が であるfalse) 場合、2 番目の部分は評価されませfalseん。これにより、不要なメール サーバーへの接続 (およびその他の時間のかかる操作) を回避できます。

これが私が達成しようとしているものの例です:

出力は次のとおりです。

NoDowntimeEmailCheck().check()最初の条件はすでに であるため、実行しないでくださいfalse。私はもう試した:

  • GroovyShellの代わりに使用Eval
  • check()フィールドへのメソッドの変更と@Lazy変換の適用
  • ${new WebserviceDownCheck().check()}への変更(ここで${ -> new WebserviceDownCheck().check()}見た)

(または) が既に実行されているGString間に初期化できるようにする遅延メカニズムが必要なようです。怠け者のようなものかもしれません。EvalGroovyShellBindingGroovyShell

カスタムの文字列評価ロジックを書かなくてもなんとかなるのだろうか?

0 投票する
1 に答える
386 参照

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 の私のコード リポジトリを参照してください。

助けてくれてありがとう。

0 投票する
1 に答える
1074 参照

groovy - groovy スクリプト エラー

私はgroovyの初心者です。コマンドプロンプト(私はIDEを使用していません)で、次のように入力しました:(環境変数の設定に問題はありません)

エラー :

data.txt はそのディレクトリにあります (TAB キーを使用して検証)


エラーがスローされる理由がわからない????

[data.txt には、次の形式の生データが含まれています]

1

2

3

4