Использование пользовательского файла класса Java в Jruby

StackOverflow https://stackoverflow.com/questions/3153484

  •  01-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь выполнить какой-то пользовательский код 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, и я все еще получаю тот же результат. Мне интересно, может ли это проблемой на более глубоком уровне.

Это было полезно?

Решение

Вместо того, чтобы «требовать» вы хотите «Java_import».

require 'java'
java_import com.package.MyClass

Видеть JRuby: Import VS включает vs java_import vs include_class Для некоторого обсуждения, например, почему вы должны использовать «Java_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'.

Ты пробовал include Java?

Смотрите это для более подробной информации: http://blogs.orcle.com/coolstuff/entry/using_java_classes_in_jruby.

Так вот то, что работал на меня, у меня были все необходимые вещи, которые предложили люди, но то, что мне действительно нужно было

$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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top