2010-03-17 3 views
0

Я пытаюсь использовать JRuby в настраиваемом приложении, и я, похоже, не могу загрузить объект JRubyEngine. Мой класс выглядит функционально похож на это:Не удается загрузить JRubyEngine, потому что org.apache.bsf.util.BSFEngineImpl не найден

public class ScriptEngine { 

    private static ScriptEngine engine = new JRubyEngine(); 

    public void run(final String script, final Map<String,Object> input) { 
     final Bindings context = engine.createBindings(); 

     context.putAll(input); 

     try { 
      engine.eval(script,context); 
     } catch (ScriptException e) { 
      log.error("Failed to execute script: "+getScript(),e); 
     } 
    } 

} 

Однако это не удается при компиляции с жалобой:

[javac] Compiling 486 source files to /workspace/myProject/build/src 
[javac] /workspace/myProject/src/net/ceilingfish/ScriptEngine.java:31: cannot access org.apache.bsf.util.BSFEngineImpl 
[javac] class file for org.apache.bsf.util.BSFEngineImpl not found 
[javac]  private static ScriptEngine engine = new JRubyEngine(); 
[javac]          ^
[javac] 1 error 

Кто-нибудь есть какие-либо идеи о том, где я могу получить этот класс от? Или если есть лучший способ создать экземпляр объекта JRubyEngine.

ответ

0

Оказывается, я должен был с помощью JRubyScriptEngine не JRubyEngine. например

import com.sun.script.jruby.JRubyScriptEngine; 
    .... other imports 

public class ScriptEngine { 

    private static ScriptEngine engine = new JRubyScriptEngine(); 

    public void run(final String script, final Map<String,Object> input) { 
     final Bindings context = engine.createBindings(); 

     context.putAll(input); 

     try { 
      engine.eval(script,context); 
     } catch (ScriptException e) { 
      log.error("Failed to execute script: "+getScript(),e); 
     } 
    } 

}