除了兩個語法錯誤 - 缺少';'在println之後,並且在關閉項目標籤後追蹤'*' - 您應該將您的ant安裝升級到版本> = 1.7.x,並配合jdk> = 6,以便能夠使用內置JavaScript引擎。
當使用JDK> = 6使用的println的是沒有問題的,請參閱:
import javax.script.*;
public class ExecuteJS {
public static void main(String[] args) throws Exception {
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
engine.eval("print('Line1')");
engine.eval("println('Line2')");
engine.eval("print('Line3')");
engine.eval("println('Line4')");
}
}
輸出:
Line1Line2
Line3Line4
和使用Ant
<project>
<script language="javascript">
println("hello, world");
</script>
</project>
但進一步測試1.9.0/Win7(我的linux系統正在運行)/ jdk1.7.0_21顯示了一些奇怪的現象:
<project>
<script language="javascript">
println("hello, world");
</script>
</project>
工作
<project default="foo">
<target name="foo">
<script language="javascript">
println("hello, world");
</script>
</target>
</project>
作品也
<project name="whatever" default="foo">
<target name="foo">
<script language="javascript">
println("hello, world");
</script>
</target>
</project>
作品也,而
<project name="java" default="foo">
<target name="foo">
<script language="javascript">
println("hello, world");
</script>
</target>
</project>
結果
BUILD FAILED
javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot read property "PrintWriter" from undefined (print#8) in print at line number 8
奇怪!
看起來像一個bug,所以最後升級ant> = 1.7.x和jdk> = 1.6和
不要在項目的名稱屬性中使用'java':-)
是否使用的是螞蟻的版本?在命令行上運行「ant -version」。另外,你正在運行哪個操作系統? –
ANT是紅帽子版本1.6.5 5 u 8操作系統 – ah414
什麼是您的Java版本?查看我對乍得 – Rebse