如何使用Ruby Java Bridge导入类

时间:2014-10-09 05:22:43

标签: ruby rjb

我有一个jar文件,它有一个我想在Rails项目中使用的类。我试图用这些命令导入带有Rjb的类。 jar文件位于bin目录中。

Rjb.load("#{Rails.root}/bin")
=> nil
Rjb::add_jar("excel_tools.jar")
=> true
Rjb::import("tools.CellEditor")
ClassNotFoundException: tools.CellEditor
Rjb::import("tools/CellEditor")
ClassNotFoundException: tools.CellEditor

班级名称“tools.CellEditor”应该是正确的。至少当我在终端的jar中列出类时,我会从apache poi和log4j获得这个以及更多的类。

$ jar tvf bin/excel_tools.jar
6926 Mon Aug 25 13:24:00 EEST 2014 tools/CellEditor.class

知道jar或类加载出错的地方吗?

1 个答案:

答案 0 :(得分:2)

我通过导入我的java类所依赖的所有jar文件来实现这一点。将依赖jar与我的类捆绑到另一个jar文件中是不够的,它们需要在自己导入类之前单独加载。

我将所有jar都复制到java_libs目录中并编写了一个像这样的初始化器

require 'rjb'

JARS = Dir.glob("#{Rails.root}/lib/java_libs/*.jar").join(':')
Rjb::load(JARS)
CELL_EDITOR = Rjb::import('tools.CellEditor')

现在,我可以在代码中的任何位置使用CELL_EDITOR方法。