【发布时间】:2012-01-15 18:39:52
【问题描述】:
我遇到了一个问题,即 YUI 压缩器在我的 IDE 中运行良好,即使我使用 maven 目标 tomcat:run 部署 tomcat,但是当我将应用程序作为 WAR 文件运行时抛出 StringIndexOutOfBoundsException:
java.lang.StringIndexOutOfBoundsException: String index out of range: 412
at java.lang.String.substring(String.java:1934)
at com.yahoo.platform.yui.compressor.JavaScriptCompressor.printSourceString(JavaScriptCompressor.java:267)
at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:330)
at com.yahoo.platform.yui.compressor.JavaScriptCompressor.<init>(JavaScriptCompressor.java:533)
现在,我知道很多人一直在报告这个问题,例如: Yui compressor StringIndexOutOfBoundsException on jboss
您可以在网络上的其他地方找到其他人提及。
建议您需要将 rhino 文件与 yui 压缩器捆绑在同一个 jar 中以避免类路径错误。
我进一步观察,发现雅虎发布了 2.4.7 版,它就是这样做的。所以我将这个新版本包含在我的项目中,并确保删除了其他 jar,我仍然得到同样的错误。
我该如何解决这个问题?
【问题讨论】:
-
上述类路径的出现是因为 'org/mozilla/javascript/Parser' 类在 yuicompressor 中的实现与 rhino 不同,尤其是在使用 maven 构建 webapp 时。可以通过以下博客链接解决问题julienlecomte.net/blog/2008/10/80
标签: java javascript tomcat maven yui