Использование файла пользовательских классов Java в Jruby - PullRequest
2 голосов
/ 01 июля 2010

Я пытаюсь выполнить некоторый пользовательский код 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 ]

6 голосов
/ 05 февраля 2011

Вместо 'require' вы хотите 'java_import'.

require 'java'
java_import com.package.MyClass

См. JRuby: импорт против include против java_import против include_class для дальнейшего обсуждения, например, почему вы должны использовать 'java_import вместо «import»

0 голосов
/ 23 сентября 2014

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

$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

0 голосов
/ 05 февраля 2011

Если у вас есть класс 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'.

0 голосов
/ 08 июля 2010

Вы пробовали include Java?

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

...