2014-10-09 56 views
1

我有一個我想從我的Rails項目中使用的類的jar文件。我試圖用這些命令用Rjb導入類。 jar文件位於bin目錄中。如何使用Ruby Java Bridge導入類

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

任何原因,爲什麼使用MRI而不是JRuby? Rjb – 2014-10-09 07:24:04

+0

我以前的JRuby經驗並不令人鼓舞。它有各種兼容性問題。也許在一兩年後它會變得更好。啓動時間問題應該得到解決。 – Mika 2014-10-14 06:10:34

回答

2

我得到了這個工作,通過導入我的java類依賴於所有的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方法。