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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top