問題タブ [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.
jruby - JavaからJRubyファイルをロード、コンパイル、および呼び出す方法は?
私が見つけた最高のドキュメントはこれでしたが、少し古くなっています-非推奨または欠落しているメソッド。Javaコードから:
.rb
ファイルシステムからファイルをロードします。- これは長時間実行されるサーバーに存在するため、可能な限り最速の形式にコンパイルされていることを確認してください。
- そのファイル内の関数またはクラスを呼び出し、Java側で構築された値を渡します。
- (可能であれば)
.rb
ファイルが変更された場合は、手順1〜3を繰り返して、新しいRubyコードを取得できます。
java - カスタム Java クラスを JRuby にロードできない
1 つの Java プロジェクトを作成しました。フォルダ構成はこんな感じ
このプロジェクト test.jar の jar を作成しました。
私のルビーファイルのコードは次のとおりです。
このスクリプトを実行すると、このエラーが発生します。
Ruby でカスタム Java クラスを使用する方法を教えてください。
TestJavaCall.java のソースコード
jruby - 実装するのではなく、JRuby で Java インターフェースを定義するにはどうすればよいですか?
具体的なクラスではなく、Java インターフェイスを必要とする JRuby から Java API を呼び出したいと考えています。Java API は java.lang.reflect.proxy を使用して、インターフェースに基づく機能を実装します。JRuby で Java インターフェイスを実装する例を数多く見つけました。ただし、Java インターフェースを実装するのではなく、JRuby で単純に定義する必要があります。もちろん、Java でインターフェイスを定義し、これを intf.java_class を介して API へのインターフェイス引数として使用できます。ただし、便宜上、JRuby コードからインターフェイスを直接定義できるようにしたいと考えています。
更新: JRuby から呼び出したい Java API は次のとおりです。
Java API では、intf 引数がクラスではなくインターフェイスである必要があります。これは、実装が java.lang.reflect.proxy を使用して、提供されたインターフェースを介してアクセスできるデータ オブジェクトのコレクションを提供するためです。Java の java.lang.reflect.proxy は、インターフェイスでのみ機能します。例として、ログ ステートメントを表すデータベースから行を読み取っていたとします。これを Java から呼び出していた場合、次の方法でデータを定義できます。
LogRecord.class を最初の引数として Query.execute メソッドに渡します。
java - JRuby に Java クラスをインポートする
Jruby に Java クラスをインポートしようとしています
ここで何が間違っていますか?