JrubyでカスタムJavaクラスファイルを使用します
-
01-10-2019 - |
質問
Java 1.6.0_06を使用して、Jruby(1.5.1)のRuby 1.8.7の最新バージョン(1.5.1)を使用して、カスタムJavaコードを実行しようとしています。クラスファイルの両方を試して、JARメソッドに入れました。試してみるとき
require 'java'
require 'path_to_class/myClass
また
require 'java'
require 'path_to_jar/a_jar.jar
両方の方法を試してみると、JARファイル内のMyClassまたは他のファイルにアクセスできません。 Javaクラスをインポートするためのネット上のその他のバリエーションは、次のエラーにつながります。
`NameError: cannot load Java class com.package.myClass from C:/jruby-1.5.1/lib/ruby/site_ruby/shared/builtin/javasupport/java.rb:51:in method_missing`
また、StackoverFlowのソリューションを確認しましたが、それでも同じ結果が得られます。これがより深いレベルで問題になるのではないかと思っています。
解決
「必要」の代わりに、「Java_import」が必要です。
require 'java'
java_import com.package.MyClass
見る Jruby:インポートvsには、vs java_import vs include_classが含まれます ちょうど「インポート」の代わりに「java_import」を使用する必要がある理由などのいくつかの議論のために
他のヒント
Javaクラスがある場合 com.mypackage.MyClass
同じフォルダー、またはClassPathに存在するフォルダーに、次のようにJrubyスクリプトから呼び出すことができます。
require 'java'
import com.pack.MyClass
myClass = MyClass.new
クラスが瓶にある場合、あなたは require
瓶:
require 'java'
require '/path/to/myjar.jar'
import com.pack.MyClass
myClass = MyClass.new
もしも myjar.jar
ClassPathには、使用することができます require 'myjar.jar'
.
試しましたか include Java
?
詳細については、これを参照してください。 http://blogs.oracle.com/coolstuff/entry/using_java_classes_in_jruby
だからここに私のために働いたものがあります、私は人々が提案したすべての必要なものを持っていましたが、私が本当に必要としていたのは
$CLASSPATH << (Rails.root.to_s + "/path/to/dotClassFolder")
Java_importステートメントの前
ファイルシステムでは、クラスがフォルダーにあった場合
Rails.root/path/to/dotClassFolder/folder/anotherFolder/MyClass.class
含む $CLASSPATH << (Rails.root.to_s + "/path/to/dotClassFolder")
それから java_import "folder.anotherFolder.MyClass"
見る
.classファイルから セクション https://github.com/jruby/jruby/wiki/callingjavafromjruby