2011-12-08 18 views
4

我遇到問題,YUI Compressor在我的IDE中正常工作,甚至當我使用maven目標tomcat:run部署tomcat但在運行應用程序時拋出StringIndexOutOfBoundsException爲WAR文件:YUI Compressor在WAR中運行時在Tomcat中運行時發生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

你可以找到其他人提在網絡上其他地方。

有人建議您需要將犀牛文件與yui壓縮器捆綁在同一個jar中以避免類路徑錯誤。

我看得更遠了,我意識到雅虎發佈了2.4.7版本,它是這樣做的。所以我將這個新版本加入到我的項目中,並確保刪除其他罐子,我仍然得到相同的錯誤。

我該如何解決這個問題?

+0

上面的classpath起因於'org/mozilla/javascript/Parser'類在yuicompressor中比在rhino中有不同的實現,特別是在使用maven的webapp構建中特別看到。 問題可以通過以下博客鏈接來解決http://www.julienlecomte.net/blog/2008/10/80/ – Sandy

回答

2

檢查你的classpath和刪除rhino- 的.jar(先備份),嘗試之後我刪除rhino-的.jar它again.i解決同樣的問題。

4

如果您正在使用maven構建只是排除犀牛或從classpath刪除js-1.7R2.jar/rhino-1.7R4.jar/rhino-1.7R3.jar文件,

<dependency> 
    <groupId>com.yahoo.platform.yui</groupId> 
    <artifactId>yuicompressor</artifactId> 
    <version>2.4.7</version> 
    <exclusions> 
     <exclusion> 
      <artifactId>js</artifactId> 
      <groupId>rhino</groupId> 
     </exclusion> 
    </exclusions> 
</dependency> 

希望它能解決您的問題。

相關問題