YuiCompressorTask:"找不到基础名称为org.mozilla.javascript.resources.Messages、语言环境为en_US的包"。

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

我可以切换回苹果的Java 1.6,它可以正常工作。我的问题是,有没有什么解决方法?我真的不能再继续使用1.6了。


2
YUICompressor目前仅支持ECMAScript 3;由于需要进行工程工作并且我是唯一的维护者,因此目前没有升级它以支持新的ECMAScript结构的计划。 - TML
4个回答

8

虽然这是一个有点过时的问题,但我今天遇到了同样的错误。

我遇到的问题是JavaScript中的语法错误,一次剪切和粘贴操作后我忘记了一个}。

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

希望这可以帮助到您...


4

我决定转向使用Google Closure Compiler,放弃了多年来使用的最后几个YUI组件。在构建日志中,我得到了大量的警告,但它确实可以工作。叹气


3

虽然这是一道老问题,但如果仍然有人在使用yui-compress,我也遇到了同样的错误。最终,原因是yui-compress不支持在函数调用时参数后面添加逗号。例如:

foo(a, b, c);

是可以的,但是

foo(a, b, c,);

不是。


请参见 https://dev59.com/AGgu5IYBdhLWcg3wgXS5#5wvrnYgBc1ULPQZF6MOz。 - TML

0

旧问题,但我必须在我的其他发现中发表评论。

它不支持用 let 定义变量。

今天有了一个新的发现,它不允许定义带有默认值参数的函数。

在我的情况下,我不得不更改

function convertDate(inputFormat,type=1)

function convertDate(inputFormat,type) {

if(typeof(type)==="undefined")
type=1;

作为找出失败原因的提示,最好的方法是克隆你正在使用的 JavaScript,并启动一个新的空白文件,在添加块直到找到哪一个产生错误。


请参见 https://dev59.com/AGgu5IYBdhLWcg3wgXS5#5wvrnYgBc1ULPQZF6MOz。 - TML

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接