Использование файла пользовательских классов Java в Jruby
Я пытаюсь выполнить некоторый пользовательский код Java через последнюю версию Jruby (1.5.1), Ruby 1.8.7, с Java 1.6.0_06. Я пробовал оба файла класса и положить его в методе jar. Когда я пытаюсь
require 'java'
require 'path_to_class/myClass
или же
require 'java'
require 'path_to_jar/a_jar.jar
Используя оба метода, я не могу получить доступ к myClass и другим файлам в jar-файле. Другие изменения в сети для импорта классов Java приводят к следующей ошибке:
`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`
Я также проверил решения на StackOverFlow, и я все еще получаю тот же результат. Мне интересно, может ли это быть проблемой на более глубоком уровне.
4 ответа
Вместо 'require' вы хотите 'java_import'.
require 'java'
java_import com.package.MyClass
Посмотрите JRuby: импорт против включения против java_import против include_class для более подробного обсуждения, например, почему вы должны использовать "java_import" вместо "import"
Если у вас есть класс Java com.mypackage.MyClass
в той же папке или в папке, присутствующей на пути к классам, вы можете вызвать ее из скрипта JRuby следующим образом:
require 'java'
import com.pack.MyClass
myClass = MyClass.new
Если класс находится в банке, вы должны require
банка:
require 'java'
require '/path/to/myjar.jar'
import com.pack.MyClass
myClass = MyClass.new
Если myjar.jar
находится на пути к классам, вы можете просто использовать require 'myjar.jar'
,
Так вот, что сработало для меня, у меня были все необходимые вещи, которые предлагали люди, но то, что мне действительно нужно было
$CLASSPATH << (Rails.root.to_s + "/path/to/dotClassFolder")
перед оператором java_import
так в файловой системе, если ваш класс был в папке
Rails.root/path/to/dotClassFolder/folder/anotherFolder/MyClass.class
Включают $CLASSPATH << (Rails.root.to_s + "/path/to/dotClassFolder")
затем java_import "folder.anotherFolder.MyClass"
Увидеть
Из раздела .class файлы по адресу https://github.com/jruby/jruby/wiki/CallingJavaFromJRuby
Ты пробовал include Java
?
Смотрите это для более подробной информации: http://blogs.oracle.com/coolstuff/entry/using_java_classes_in_jruby