問題タブ [jruby-java-interop]

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 投票する
2 に答える
125 参照

java - JRuby Java 拡張機能の文字列 xor の RubyString への byte[]

JRuby が文字列 xor を実行するための Java 拡張機能を実装しようとしています。バイト配列をに型キャストする方法がわかりませんRubyString

また、同じ操作をインプレースで実行するにはどうすればよいxですか (つまり、値が更新されます)。

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

java - jar ファイルから実行すると JRuby ファイルが実行されない (以前は、jar ファイルから System.out.println が機能しない)

( JRuby Forumでクロスポストされましたが、まだ回答が得られなかったため、ここに再度投稿しました)。

プラットフォーム: jruby 9.0.4.0 (2.2.2) 2015-11-12 b9fb7aa Java HotSpot(TM) 64 ビット サーバー VM 24.79-b02 on 1.7.0_79-b15 +jit [Windows 7-amd64]

RedBridge Core を介して JRuby コードを呼び出す Java のメイン プログラム。Java クラスは Jar-File にあります。

Ruby コードがファイル システム内で検索されるのではなく、Jar ファイル内からも実行されると主張しない限り、このセットアップは機能します。Jar ファイルからコードを実行すると、JRuby の stdout が消えてしまったようです。

まず、これがWORKINGケースです:

すべての println ステートメントの結果が表示され、ファイル out.txt が作成されます。

次に、NON-WORKING ケースの場合:

全体の設定で、1 行だけ変更します。bridge.rb の呼び出しは次のようになります。

つまり、RELATIVE を CLASSPATH に置き換え、「rbsrc/」を削除します。これを実行すると、エラー メッセージは表示されず、すべての println ステートメントの出力が得られますが、「puts」ステートメントの出力は表示されず、ファイル out.txt も作成されません。

bridge.rb は正しく読み込まれているように見えますが (bridge.rb を別の名前に変更すると例外が発生します)、実行されていないようです。

どうして?

更新: 問題の説明が間違っていました! stdout に問題はありませんが、JRuby コードbridge.rbが実行されていないようです。runScriptletを返しnull、Rubyプログラム内でファイルを作成すると、その後ファイルがありません。

私は何を間違っていますか?すべての JRuby ファイルを 1 つのディレクトリに格納しています。それらをJarファイルに入れました。を使用して実行しjar -cp JARFILE MAINCLASSます。他に何が欠けていますか?

ところで、サンプル アプリケーション全体はここにあります。込みがありreadme.txtます。

0 投票する
0 に答える
138 参照

jruby - ScriptingContainer、Ruby ランタイム、および変数マップ

(相互投稿メモ: この質問は、12 月 20 日に JRuby メーリング リスト (jruby@ruby-lang.org) と1 月 2 日にJRuby フォーラムにも投稿されましたが、まだ回答がありません)。

この質問は、マルチスレッドが存在する場合の LocalContextScope パラメーターの影響を理解することに関するものです。

JRuby Wiki で、LocalContextScope パラメーターの最適な値を選択するのに役立つレシピを見つけることができます。このページでは、このパラメーターが、ScriptingContainer および/または Ruby ランタイムおよび/または変数マップをスレッド間で共有するかどうかを制御することを説明します。ただし、この問題、特に「システム」のどの部分がこれら 3 つのコンポーネントのどの部分に実装されているかについて、もう少し深く理解したいと思います。

具体的な例として、Ruby でグローバル変数を作成したり、新しいクラスを作成したり、最上位のコンテキストで関数や変数を作成したりする場合、それらは ScriptingContainer、ランタイム、または変数マップに属しますか? これを知らないと、どの LocalContextScope を使用すればよいかわかりません。

0 投票する
2 に答える
78 参照

jruby - JRuby で c-extensions を持つ gem を使用しますか、それとも Java に移植しますか?

入力文字列と以前に入力した文字列の間であいまい一致テストを行っています。テストは入力中にライブで実行されます。

私はすでに多くの言語に翻訳されているStrikeAMatchと呼ばれる驚くほど正確なアルゴリズムを実装しています。私が見つけた最速の Ruby 実装はamatchです。ただし、 Ruby (MRI) 用の C インタープリターを必要とするC 拡張でデータを処理するため、私の JRuby 環境とは互換性がありません。ただし、かなり高速です。

代替環境の設定を回避できれば幸いです。別のアプローチとして、JRuby Wiki で提案されているように、元の Java コードを試して移植することもできます。しかし、それを行う方法がわかりません。

これにアプローチする方法についてのアイデアはありますか?