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