Использование файла пользовательских классов 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

Другие вопросы по тегам