从ant执行:“找不到提供者com.sun.script.javascript.RhinoScriptEngineFactory”

时间:2013-01-25 09:00:24

标签: ant rhino jsr223

我正在开发一个使用JSR 223的应用程序。

一切正常(单元测试和从命令行执行),除非执行来自Ant。在这种情况下,执行此错误:

ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider com.sun.script.javascript.RhinoScriptEngineFactory not found

JDK7包含Rhino的实现,我确信这个类在rt.jar中。为什么在使用Ant执行时没有找到?

JDK版本: java版“1.7.0_11” Java(TM)SE运行时环境(版本1.7.0_11-b21) Java HotSpot(TM)64位服务器VM(版本23.6-b04,混合模式)

ANT版本: 2012年5月22日编译的Apache Ant(TM)版本1.8.4

由于

TEST:

package testing;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class TestingGetEngineJavascript {

    public static void main(String[] args) {
        new TestingGetEngineJavascript().test();

    }

    public void test() {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("JavaScript");
        if(engine == null) {
            throw new RuntimeException("Upps!!!!!!! Not ScriptEngine found for JavaScript");
        } else {
            System.out.println("ScriptEngine found for JavaScript");
        }
    }

}


<project name="test" default="test" basedir=".">
    <target name="test">
        <java classpath="dist/testAntJSR223.jar" classname="testing.TestingGetEngineJavascript">
        </java>
    </target>
</project>

3 个答案:

答案 0 :(得分:1)

您可以尝试初始化: ScriptEngineManager manager = new ScriptEngineManager(null);

答案 1 :(得分:0)

有一个“时间”的解决方法:使用fork =“true”

但我认为这是一个错误:https://issues.apache.org/bugzilla/show_bug.cgi?id=54484

答案 2 :(得分:0)

我需要包括:

做类似的例子......