我正在使用闭包编译器jar在Windows环境中的r.js优化中进行缩小。
使用 ANT 可执行文件运行此任务时,出现非法字符错误,但在使用.bat文件运行相同的任务时,它工作正常。
蚂蚁执行任务
<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:workspacetestuir-jslibclosurecompiler.jar", line 2: illegal character
[exec] js: ╝MOC ♦ META-INF/■╩ PK♥♦
[exec] js: ^
[exec] js: "C:workspacetestuir-jslibclosurecompiler.jar", line 1: Compilation produced 1 syntax errors.
[exec]
BUILD FAILED
优化.bat
java -classpath "r-jslibrhinojs.jar";"r-jslibclosurecompiler.jar" org.mozilla.javascript.tools.shell.Main r-js/dist/r.js -o build.js
Ant 脚本调用java
的方式似乎与批处理文件不同。exec
任务正在调用以下命令:
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>