问题
I'm trying to use a recent version of Rhino in an ant tag, but it seems to be using the version of Rhino that comes bundled with the JVM instead. I've tried adjusting the classpath to specify the Rhino script jar. Currently, I've tried the following:
<project default="hello" name="hello-world" basedir=".">
<target name="hello">
<script language="javascript">
<classpath>
<pathelement location="js.jar"/>
</classpath><![CDATA[
x=<hello><world/></hello>
]]></script>
</target>
</project>
Notice the inclusion of E4X syntax in the script, which should work only work in Rhino from Mozilla, and not the one bundled with the JVM.
js.jar is in the same directory as the ant script. I've also tried renaming it to rhino.jar, as I think I've seen documentation that suggested that this was necessary.
When I run it, it gives the following error:
javax.script.ScriptException: sun.org.mozilla.javascript.EvaluatorException: syntax error (#3)
So, it does appear as though it is still using the version of Rhino that comes with the JVM. How can I make it use the new version?
回答1:
I've got it working using the following Ant project:
<project default="hello" name="helloworld" basedir=".">
<target name="hello">
<script language="javascript" manager="bsf">
<classpath>
<fileset dir="rhino-lib" includes="*.jar"></fileset>
</classpath><![CDATA[
x=<hello><world/></hello>
echo = helloworld.createTask("echo");
for (i=1; i<=10; i++) {
echo.setMessage(i*i);
echo.perform();
}
echo.setMessage(x);
echo.perform();
]]></script>
</target>
</project>
You need the following jars in ./rhino-lib:
- bsf.jar (bsf 2.4.0)
- commons-logging-1.1.1.jar
- js.jar (rhino 1.7R2)
Not the prettiest, but it works. I will try a bit more to see if I can get it to work with javax.script.
回答2:
See the following response on the Ant user's mailing list: http://mail-archives.apache.org/mod_mbox/ant-user/201008.mbox/browser
来源:https://stackoverflow.com/questions/3526960/using-recent-rhino-in-ant-script