14

我已经在我的项目中使用 YuiCompressorTask(最新版本)很长时间了,没有任何问题。在 OSX 上升级到 Oracle 的 Java 1.7 包后,它会因以下异常而中断(这是针对 javascript 文件;它适用于 css 文件):

[yuiCompress] java.lang.reflect.InvocationTargetException
[yuiCompress]   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[yuiCompress]   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[yuiCompress]   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[yuiCompress]   at java.lang.reflect.Method.invoke(Method.java:601)
[yuiCompress]   at com.yahoo.platform.yui.compressor.Bootstrap.main(Bootstrap.java:21)
[yuiCompress]   at ww.ant.YuiCompressorTask.execute(YuiCompressorTask.java:40)
[yuiCompress]   at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
[yuiCompress]   at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
[yuiCompress]   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[yuiCompress]   at java.lang.reflect.Method.invoke(Method.java:601)
[yuiCompress]   at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[yuiCompress]   at org.apache.tools.ant.Task.perform(Task.java:348)
[yuiCompress]   at org.apache.tools.ant.Target.execute(Target.java:390)
[yuiCompress]   at org.apache.tools.ant.Target.performTasks(Target.java:411)
[yuiCompress]   at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
[yuiCompress]   at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
[yuiCompress]   at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[yuiCompress]   at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
[yuiCompress]   at org.apache.tools.ant.Main.runBuild(Main.java:809)
[yuiCompress]   at org.apache.tools.ant.Main.startAnt(Main.java:217)
[yuiCompress]   at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
[yuiCompress]   at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
[yuiCompress] Caused by: java.util.MissingResourceException: Can't find bundle for base name org.mozilla.javascript.resources.Messages, locale en_US
[yuiCompress]   at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1499)
[yuiCompress]   at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1322)
[yuiCompress]   at java.util.ResourceBundle.getBundle(ResourceBundle.java:796)
[yuiCompress]   at org.mozilla.javascript.ScriptRuntime.getMessage(ScriptRuntime.java:3316)
[yuiCompress]   at org.mozilla.javascript.ScriptRuntime.getMessage0(ScriptRuntime.java:3273)
[yuiCompress]   at org.mozilla.javascript.Parser.addError(Parser.java:121)
[yuiCompress]   at org.mozilla.javascript.TokenStream.getToken(TokenStream.java:773)
[yuiCompress]   at org.mozilla.javascript.Parser.peekToken(Parser.java:161)
[yuiCompress]   at org.mozilla.javascript.Parser.parse(Parser.java:361)
[yuiCompress]   at org.mozilla.javascript.Parser.parse(Parser.java:337)
[yuiCompress]   at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:312)
[yuiCompress]   at com.yahoo.platform.yui.compressor.JavaScriptCompressor.<init>(JavaScriptCompressor.java:533)
[yuiCompress]   at com.yahoo.platform.yui.compressor.YUICompressor.main(YUICompressor.java:131)
[yuiCompress]   ... 22 more

我可以切换回 Apple 的 Java 1.6,它运行良好。我的问题是,有没有办法解决这个问题?我真的不能再继续1.6了。

4

4 回答 4

8

一个有点老的问题,但我今天遇到了同样的错误。

在我的情况下,问题是我的 JavaScript 中的语法错误,我在剪切和粘贴操作后忘记了一个 }。

我使用这个在线工具(http://refresh-sf.com/)来压缩js文件,它返回了一些奇怪的错误,但比java异常堆栈更有用......

希望这有助于...

于 2012-09-27T11:56:36.480 回答
4

我决定改用 Google Closure Compiler,放弃我多年来使用的最后一个 YUI 组件。我在构建日志中收到大量警告,但它确实有效。

于 2013-01-10T16:45:27.287 回答
3

真的很老的问题,但是如果有人仍在使用 yui-compress 我有同样的错误,结果 yui-compress 不喜欢在函数调用中的参数后尾随逗号。例如:

foo(a, b, c);

可以,但是

foo(a, b, c,);

不是。

于 2017-10-12T11:32:19.273 回答
0

老问题,但我不得不对我的其他发现发表评论。

它不支持用 let 定义变量。

今天有一个新发现,它不允许使用具有默认值的参数定义函数

就我而言,我不得不改变

函数转换日期(输入格式,类型=1)

函数转换日期(输入格式,类型){

如果(类型(类型)===“未定义”)
类型=1;

作为查找失败原因的提示,最好的方法是克隆您正在使用的 javascript,然后开始一个新的空白,然后添加块,直到找到哪个产生错误。

于 2019-05-29T18:05:54.360 回答