我需要从传递标记language_in=ECMASCRIPT5的.bat文件中调用Closure Compiler,我正在使用以下脚本,但收到错误消息

java.lang.classnotfoundexception: com.google,javascript.jscomp.SourceFile


我想知道:


当我省略标志代码可以很好地编译时,是否可以正确传递标志?
您能否提供有关此错误的更多信息?




java -Xms256m -Xmx256m  -cp "%~dp0../shrinksafe/js.jar";"%~dp0../closureCompiler/compiler.jar --language_in=ECMASCRIPT5";"%~dp0../shrinksafe/shrinksafe.jar" org.mozilla.javascript.tools.shell.Main  "%~dp0../../dojo/dojo.js" baseUrl="%~dp0../../dojo" load=build %*

最佳答案

the documentation所述:


(ClassNotFoundException)当应用程序尝试使用其字符串名称通过其字符串名称加载类时抛出:


类Class中的forName方法。
类ClassLoader中的findSystemClass方法。
类ClassLoader中的loadClass方法。



我认为发生这种情况的原因是,当您省略该标志时代码就起作用了,原因是变量ECMASCRIPT5是在compiler.jar中定义的,您可能未将其包括在类路径中。

您可以尝试将compile.jar放置到WEB-INF / lib中,以便将其与应用程序一起部署,并在执行时进行访问。

07-25 23:19