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.

¿Fue útil?

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top