質問

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top