Usando el archivo personalizado Clase Java en jruby
-
01-10-2019 - |
Pregunta
Estoy intentando ejecutar algún código Java personalizada a través de la última versión del jruby (1.5.1), Ruby 1.8.7, con Java 1.6.0_06. He intentado tanto el archivo de clase y ponerlo en un método frasco. Cuando intento
require 'java'
require 'path_to_class/myClass
o
require 'java'
require 'path_to_jar/a_jar.jar
Tratando ambos métodos, no puedo acceder a los myClass ni ningún otro archivo en el archivo jar. Otras variaciones en la red para la importación de clases de Java conducen al error siguiente:
`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`
También se han comprobado las soluciones en StackOverflow y todavía obtener el mismo resultado. Me pregunto si esto podría ser un problema en un nivel más profundo.
Solución
En lugar de 'necesita', desea 'java_import'.
require 'java'
java_import com.package.MyClass
JRuby: importación vs incluyen vs vs java_import include_class para algunos más discusión por ejemplo, por las que debe utilizar 'java_import' en lugar de sólo 'importar'
Otros consejos
Si usted tiene un com.mypackage.MyClass
clase Java en la misma carpeta, o en una carpeta presente en la ruta de clases, se le puede llamar desde su script JRuby como esto:
require 'java'
import com.pack.MyClass
myClass = MyClass.new
Si la clase está en un frasco, lo que tiene que require
el frasco:
require 'java'
require '/path/to/myjar.jar'
import com.pack.MyClass
myClass = MyClass.new
Si myjar.jar
está en la ruta de clase, sólo puede utilizar require 'myjar.jar'
.
¿Usted intentó include Java
?
Ver esto para más detalles: http://blogs.oracle.com/coolstuff/entry / using_java_classes_in_jruby
Así que aquí es lo que funcionó para mí, tenía toda la materia requiere que las personas sugirieron, pero lo que realmente necesitaba era
$CLASSPATH << (Rails.root.to_s + "/path/to/dotClassFolder")
antes de la declaración java_import
por lo que en el sistema de archivos, si su clase era estaba en la carpeta ??p>
Rails.root/path/to/dotClassFolder/folder/anotherFolder/MyClass.class
Incluir $CLASSPATH << (Rails.root.to_s + "/path/to/dotClassFolder")
entonces java_import "folder.anotherFolder.MyClass"
Ver
A partir de los archivos .class https://github.com / jruby / jruby / wiki / CallingJavaFromJRuby