1

我有一个 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 或类加载出错的地方吗?

4

1 回答 1

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在代码中的任何地方使用这些方法。

于 2014-10-14T06:20:28.283 回答