Utilizzando file di classe Java personalizzati in JRuby
-
01-10-2019 - |
Domanda
Sto cercando di eseguire del codice Java personalizzato attraverso l'ultima versione di JRuby (1.5.1), Ruby 1.8.7, con Java 1.6.0_06. Ho provato sia il file di classe e la messa in un metodo vaso. Quando provo
require 'java'
require 'path_to_class/myClass
o
require 'java'
require 'path_to_jar/a_jar.jar
Provare entrambi i metodi, non posso accedere alle myClass né qualsiasi altro file nel file jar. Altre variazioni in rete per l'importazione di classi Java conducono alla seguente errore:
`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`
Inoltre ho controllato le soluzioni su StackOverflow e ho ancora ottenere lo stesso risultato. Mi chiedo se questo potrebbe essere un problema a un livello più profondo.
Soluzione
Al posto di 'bisogno', si vuole 'java_import'.
require 'java'
java_import com.package.MyClass
JRuby: import vs includono vs vs java_import include_class per un po 'di discussione per esempio perché si dovrebbe usare 'java_import' invece di 'import'
Altri suggerimenti
Se si dispone di una classe Java com.mypackage.MyClass
nella stessa cartella, o in un presente cartella del percorso di classe, si può chiamare dal vostro script JRuby in questo modo:
require 'java'
import com.pack.MyClass
myClass = MyClass.new
Se la classe è in un vaso, è necessario require
il vaso:
require 'java'
require '/path/to/myjar.jar'
import com.pack.MyClass
myClass = MyClass.new
Se myjar.jar
è sul classpath, si può semplicemente usare require 'myjar.jar'
.
Hai provato include Java
?
Vedere questo per maggiori dettagli: http://blogs.oracle.com/coolstuff/entry / using_java_classes_in_jruby
Ecco cosa ha funzionato per me, ho avuto tutta roba richiesto che la gente ha suggerito, ma quello che ho davvero bisogno era
$CLASSPATH << (Rails.root.to_s + "/path/to/dotClassFolder")
prima dell'istruzione java_import
così nel file system, se la classe era stata nella cartella
Rails.root/path/to/dotClassFolder/folder/anotherFolder/MyClass.class
Includi $CLASSPATH << (Rails.root.to_s + "/path/to/dotClassFolder")
poi java_import "folder.anotherFolder.MyClass"
Vedere
Da file .class https://github.com / JRuby / JRuby / wiki / CallingJavaFromJRuby