問題タブ [jsr223]
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 - JSR-223 を使用して ScriptException を引き起こす Java 例外にアクセスする方法
JRE6 に組み込まれている JSR-223 スクリプト エンジンを使用して Javascript を実行しています。Javascript は、Java コードとオブジェクトにアクセスできます。JavaScript から実行される Java コードから例外がスローされると、ScriptEngine は ScriptException をスローします。
Javascript が例外をスローする原因となった Java 例外にアクセスできるようにしたいと考えています。
Javascript から、例外をキャッチして、例外の javaException フィールドを確認できます。
ただし、JavaScript を制御することはできず、ScriptEngine から実行することしかできません。ScriptException から「内部」Java 例外を取得する方法はありますか?
Rhino を使用していた場合、RhinoException で Java 例外が利用可能になると思います。RhinoException は JSR-223 API からは利用できません。
groovy - なぜ GroovyScriptEngineImpl のインスタンスをエンジン化するのですか?
java6機能を使用してScriptEngineを取得しているときにgroovyで、groovyの場合、インターフェイスではなくクラスのタイプであるインスタンス「GroovyScriptEngineImpl」が提供されます。インターフェイスを取得する他の方法はありますか?
「GroovyScriptEngineImpl」を使用する代わりに使用できるインターフェイスはありますか
java - JSR-223 を使用した Jython インポート ステートメント
JSR-223 で外部 Jython モジュールを使用するにはどうすればよいですか? (いくつかの foo python モジュールが pip または easy_install を使用してインストールされ、次の Python コードが Jython で実行されていると仮定します)
Python コード: (jsr223_test.py)
Java コード:
これにより、ImportError: no module named pyfoo が発生します。ただし、ターミナルで次を実行すると成功します。
何かアドバイス?
編集: クラスパスの問題だと思い、py ファイルを卵からアプリケーションの作業ディレクトリにコピーしました。http://wiki.python.org/jython/UserGuide#using-jsr-223に従って、そのパスもエンジン環境に追加しました (コードで見られるように、//BEGIN EDIT と //END EDIT の間)。そしてそれはうまくいきました。$JYTHON_HOME/Lib/site-packages をパスに追加しようとしましたが、機能しませんでした。理由はわかりません。
javascript - RhinoとJSR-223を使用してJSONファイルを読み取る
私は、JavaJSR-223APIを介してRhinoで評価しているJavaScriptを使用してJSONファイルを読み取ろうとしています。私がやろうとしていることは、Rhinoシェルでは機能しますが、Javaコードに埋め込まれたJavascriptでは機能しません。
動作するものは次のとおりです。
動作しないものは次のとおりです。
このエラーが発生します:
readFile
エンジンでを利用できるようにするにはどうすればよいですか?
ruby - Mule Studio で jruby-openssl を使用する
Mule Studio の Ruby で openssl を使用する必要があります。Mule Studio には、JRuby があらかじめパッケージ化されています。ご存じのとおり、JRuby には openssl が含まれていません。jruby-openssl gem をダウンロードし、Mule プロジェクトにファイルを含めました。jopenssl.jar を除くすべてのファイルを要求できます。実際にはそれを要求できますが、何もしないようです。次のエラーが表示されます。
これはもちろん を参照していOpenSSL::OPENSSL_VERSION_NUMBER
ます。
楽しみのために手動で定義しましたが、初期化されていない定数がどんどん見つかり続けました。jruby-openssl を使用する唯一の方法は、解凍して jruby-complete.jar と jopenssl.jar を結合することであるという記事をいくつか読みました。Mule は JRuby の独自のコピーを使用しているため、ばかげたことは言うまでもなく、それは実現不可能です。
Mule Studio で jruby-openssl を使用する方法を知っている人はいますか? (参考までに、私は Mule と JRuby の両方に慣れていませんが、すぐに両方が嫌いになることを学んでいます。)
補遺
少し背景: Mule を使用して FTPS 経由でファイルを転送する必要があります。直接サポートされておらず、既存の Ruby 実装があるため、単純に Ruby コードを Mule に移動することにしました。しかし、これには openssl が必要であり、そこからこの問題が始まりました。上記のrequire 'openssl'
行は、エラーをトリガーするものです。
関連する Mule/Ruby コードは次のとおりです。
あなたの提案で、Mule 環境ライブラリを再構築し、jopenssl.jar を含む新しい JRuby バージョンに置き換えました。ただし、アプリの実行時に次のエラーが表示されるようになりました。私の知る限り、jruby-complete.jar 以外は何も変わっていません。
アップデート
悲しいことに、何日にもわたる無駄な努力の末、私の会社は、Mule を介して FTPS をサポートする価値はないと判断しました。
java - JSR 223 TCK の場所
JSR 223 仕様の TCK を見つける場所 (ダウンロード リンクなど) を探しています。これは、Apache 2 ライセンスの下でリリースされたプロジェクト用です。(本当はソースコード+TCKのバイナリで仕様をよく理解して欲しいです。ソースコードでも最悪の場合で十分です)
ありがとう
java - JRubyクラスとJavaスクリプトエンジンの予期しない結果
JavaスクリプトエンジンとRubyを試していますが、rubyスクリプトでいくつかのインスタンス変数を設定するのに問題があります。これは、Rubyについての私の理解の欠如、またはスクリプトエンジンでのrubyクラスの使用方法についての私の理解の欠如である可能性があります。次のコードで:
出力は「A、Bはテストです」になると思います
代わりに、出力は「、テスト」です。
このコードで変数a、bをどのように設定する必要がありますか?
編集:明確にするために、理想的には、このStringBuilderに変数を追加して変数を設定したくありません-これは単なる説明のためです。実際には、いくつかのソースからスクリプトをロードし、後でそのRubyオブジェクトにプロパティを設定してメソッドを呼び出したいと思います。私は他の誰もが知っているいくつかの重要なステップを見逃していると確信しています:)。Gareth Davisの回答のおかげで、バインディングとグローバル変数を正常に使用できることがわかりましたが、それがすべてのスクリプトで機能するとは限りません。適切な記事が見つからなかったため、「helloworld」タイプの使用法を超える優れた記事へのリンクをいただければ幸いです。
2番目の編集:これは機能する最終的なコードであり、私が知っていた重要な行が欠落している必要があります:)-
binding - JRuby JSR223 インターフェイスは binidngs を無視します
JRuby (1.6.7.2) フレームワークの JSR 223 javax.script インターフェイスは、ScriptContext のバインディングでバインドされた Java 値を無視するようです。私は間違いを犯しますか?動作しない簡単な例を次に示します。
それとも既知の問題ですか?
java - Tomcat での JSR223 スクリプトのクラスパスの問題
Tomcat 内で実行しているときに JSR223 スクリプトで発生している問題を理解しようとしています。私は Java スクリプト エンジンを使用していますが、問題はより一般的に当てはまると思います (リファレンス JS エンジンでも同様の問題が見られました)。評価のために渡すスクリプトの最初の行は次のとおりです。
これは次のメッセージで失敗します。
したがって、Java スクリプト エンジンのソース コードを掘り下げると、なぜこれが起こっているのかがわかります。スクリプト テキストを JavaCompiler に渡し、取得したものをクラスパスとして指定しますjava.class.path
が、Tomcat はクラスローダーとクラスパスに関して独自の処理を行うためです。が含まれているのは だけです$CATALINA_HOME/bin/bootstrap.jar
。
スクリプト エンジンが使用するクラスパスをオーバーライドすることは可能ですが、そうすると次の問題が発生します。つまり、Tomcat が使用しているクラスパスを実行時に発見するにはどうすればよいでしょうか。
ここで明らかな何かが欠けているに違いないように思えます。私が知る限り、これは Web アプリケーションであらゆる種類の本格的なスクリプトを実行しようとする人に起こるからです。それでも私は議論のために何時間も検索しましたこのエリアでは、質問をする人すら見つかりません...
java - Java から (JSR-223 経由で) 呼び出された JavaScript コードをデバッグするには?
jsr223 (javascript)を介していくつかのロジックが実行される Java アプリケーションを開発しています。Java クラスでは、いくつかの Java オブジェクトを JavaScript に転送し (たとえば、ドメイン オブジェクト、いくつかの SQL クエリの PreparedStatement)、コンパイル済みの JavaScript コードを開始します。
開発にはEclipseを使用しています。
私の質問は、javascript 部分をデバッグする方法ですか?
乾杯、ジャセク