使用闭包编译器.jar使用ANT进行r.js优化时获取非法字符错误

时间:2014-11-22 11:24:59

标签: java javascript ant r.js

我正在使用闭包编译器jar在Windows环境中的r.js优化中进行缩小。

使用ANT exec运行此任务时,出现非法字符错误,但在使用 .bat 文件运行相同任务时,它正常工作。

ANT执行任务

<target name="do-optimization" description="It will do optimization using r.js.">
    <exec dir="." executable="java" failonerror="true">
        <arg value="-jar" />
        <arg path="${src.dir}/r-js/lib/rhino/js.jar" />
        <arg path="${src.dir}/r-js/lib/closure/compiler.jar" />
        <arg path="${src.dir}/r-js/dist/r.js" />
        <arg value="-o"/>
        <arg path="${src.dir}/r-js/build.js" />
    </exec>
</target>

控制台输出

do-optimization:
 [exec] js: "C:\workspace\test\ui\r-js\lib\closure\compiler.jar", line 2: illegal character
 [exec] js:   ╝MOC                   ♦ META-INF/■╩  PK♥♦
 [exec] js: ^
 [exec] js: "C:\workspace\test\ui\r-js\lib\closure\compiler.jar", line 1: Compilation produced 1 syntax errors.
 [exec]

 BUILD FAILED

optimize.bat

java -classpath "r-js\lib\rhino\js.jar";"r-js\lib\closure\compiler.jar" org.mozilla.javascript.tools.shell.Main r-js/dist/r.js -o build.js

1 个答案:

答案 0 :(得分:0)

似乎Ant脚本与批处理文件的调用方式相同javaexec任务正在调用以下命令:

java -jar ${src.dir}/r-js/lib/rhino/js.jar ${src.dir}/r-js/lib/closure/compiler.jar ${src.dir}/r-js/dist/r.js -o ${src.dir}/r-js/build.js

明显不同于.bat文件中的那个,即jar没有正确地添加到类路径中。

在Ant中,您可以简单地使用java任务来运行Java类。请尝试使用以下内容:

<java classname="org.mozilla.javascript.tools.shell.Main" failonerror="true">
    <arg path="${src.dir}/r-js/dist/r.js" />
    <arg value="-o"/>
    <arg path="${src.dir}/r-js/build.js" />
    <classpath>
        <pathelement location="${src.dir}/r-js/lib/rhino/js.jar" />
        <pathelement location="${src.dir}/r-js/lib/closure/compiler.jar" />
    </classpath>
</java>