Не удалось загрузить JRubyEngine, поскольку org.apache.bsf.util.BSFEngineImpl не найден - PullRequest
0 голосов
/ 17 марта 2010

Я пытаюсь использовать JRuby в пользовательском приложении, и я не могу загрузить объект JRubyEngine. Мой класс выглядит примерно так:

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.

Ответы [ 2 ]

0 голосов
/ 17 марта 2010

Оказывается, я должен был использовать 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);
        }
    }

}
0 голосов
/ 17 марта 2010

Вы можете скачать Apache BSF с http://jakarta.apache.org/site/downloads/downloads_bsf.cgi

...