java - 使用 Closure-compiler.jar 使用 ANT 进行 r.js 优化时出现非法字符错误

标签 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

优化.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

最佳答案

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>

关于java - 使用 Closure-compiler.jar 使用 ANT 进行 r.js 优化时出现非法字符错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27076840/

相关文章:

java - 使用 java 1.8 在 Windows 上运行 ant 时出现 ClassLoader 异常

java - 如何在ant文件中设置类路径来执行Java程序并包含外部jar?

java - 从函数返回多个元素

java - JPA CreateEntityManagerFactory() 方法挂起

javascript - jQuery 日期选择器不适用于 ajax 生成的输入字段

javascript - 用于在 Angular 项目中进行测试的构建或管道。 Protractor 问题

java - 愚蠢的 For 循环实现

java - SBT - 有没有办法忽略 copyResources 中的重复映射?

javascript - 如何在选择标签中调用两个不同的操作

regex - 从 Ant 任务中使用正则表达式删除新行