2011-09-02 41 views
2

是否可以使用Java中的ScriptEngineManager设置我的jruby的gem路径?问题是我正在使用压缩的jruby解释器(jruby-complete.jar),并且无法使用预先安装的gem来获取此包,所以我正在尝试使用ScriptEngineManager从Java运行jruby并重定向宝石的路径,我已经安装在我的硬盘上。从ScriptEngineManager eval方法设置gem路径

例子:

public class Main { 
    public static void main(String[] args) { 
     StringBuffer jruby = null; 
     ScriptEngine runtime = null; 

     try { 
      runtime = new ScriptEngineManager().getEngineByName("jruby"); 
      jruby = new StringBuffer(); 

      jruby.append("require 'ruby/Libraries.rb'"); 
      jruby.append("\r\n"); 
      jruby.append("if __FILE__ == $0"); 
      jruby.append("\r\n"); 
      jruby.append("\tzkan = ZKANWritter.new(\""); 
      jruby.append("G:/path/output.xls"); 
      jruby.append("\",\""); 
      jruby.append("G:/path/kanban.txt"); 
      jruby.append("\",\"//path/LT CUU.tab\")"); 
      jruby.append("\r\n"); 
      jruby.append("\tzkan.write(2)"); 
      jruby.append("\r\n"); 
      jruby.append("end"); 

      runtime.eval(jruby.toString()); 
     } catch (Exception ex) { 
      System.out.println("Error: " + ex.getMessage()); 
     } 
    } 
} 

由于提前

〜埃德尔醌

回答

2

我刚刚设置的变量RUBYLIB & GEM_HOME编程红宝石环境:

ENV["RUBYLIB"] = "lib/libs" 
ENV["GEM_HOME"] = "lib/gems" 

require "library-1.rb" 
... 
require "library-n.rb"