Verwenden von benutzerdefinierten Java-Klassendatei in JRuby
-
01-10-2019 - |
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.
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