0

我正在开发一个使用 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 Runtime Environment (build 1.7.0_11-b21) Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, 混合模式)

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

谢谢

测试:

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>
4

3 回答 3

1

您可以尝试使用以下方法进行初始化: ScriptEngineManager manager = new ScriptEngineManager(null);

于 2015-06-04T12:28:14.840 回答
0

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

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

于 2013-01-25T11:00:10.823 回答
0

我需要包括:

使类似的示例工作...

于 2013-08-19T12:02:44.520 回答