Frage

Ich versuche, einige benutzerdefinierte Java-Code durch die neueste Version von JRuby (1.5.1), Rubin 1.8.7, mit Java 1.6.0_06 auszuführen. Ich habe versucht, sowohl die Klassendatei und es in einer Glas-Methode setzen. Wenn ich versuche,

require 'java'  
require 'path_to_class/myClass

oder

require 'java'  
require 'path_to_jar/a_jar.jar  

beide Methoden Der Versuch, ich kann nicht die myClass Zugriff noch andere Dateien in der JAR-Datei. Andere Varianten im Netz Java-Klassen für den Import führen zu dem folgenden Fehler:

`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`

Ich habe überprüft auch die Lösungen auf Stackoverflow und ich immer noch das gleiche Ergebnis erhalten. Ich frage mich, ob dies ein Problem auf einer tieferen Ebene sein.

War es hilfreich?

Lösung

Statt 'erfordern', Sie wollen 'java_import'.

require 'java'
java_import com.package.MyClass

Siehe JRuby: import vs umfassen vs java_import vs include_class für etwas mehr Diskussion zB warum Sie verwenden sollten ‚java_import‘ statt nur ‚importieren‘

Andere Tipps

Wenn Sie eine Java-Klasse com.mypackage.MyClass im gleichen Ordner haben oder in einem Ordner, die auf dem Classpath, können Sie es von Ihrem JRuby-Skript wie folgt aufrufen:

require 'java'
import com.pack.MyClass

myClass = MyClass.new

Wenn die Klasse in einem Glas ist, haben Sie das Glas require:

require 'java'
require '/path/to/myjar.jar'
import com.pack.MyClass

myClass = MyClass.new

Wenn myjar.jar auf dem Classpath ist, können Sie einfach require 'myjar.jar' verwenden.

Haben Sie versucht, include Java?

Sehen Sie diese für weitere Informationen: http://blogs.oracle.com/coolstuff/entry / using_java_classes_in_jruby

So, hier ist was für mich gearbeitet, ich hatte alle notwendigen Sachen, die Leute vorgeschlagen, aber was ich wirklich brauchte, war

$CLASSPATH << (Rails.root.to_s + "/path/to/dotClassFolder")

vor der java_import Anweisung

so im Dateisystem, wenn Ihre Klasse war, war in dem Ordner

Rails.root/path/to/dotClassFolder/folder/anotherFolder/MyClass.class

Neue $CLASSPATH << (Rails.root.to_s + "/path/to/dotClassFolder") dann java_import "folder.anotherFolder.MyClass"

Siehe

Aus Class-Dateien https://github.com / jruby / jruby / wiki / CallingJavaFromJRuby

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top