jboss上的Yui压缩程序StringIndexOutOfBoundsException


问题内容

当用2.4.6最小化yui时,出现此问题:

java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:232

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)

当通过我的IDE启动时,它可以工作,但是当部署到jboss时,它就不能工作。这个地方:http:
//yuilibrary.com/forum/viewtopic.php?p=20086对该问题进行了一些讨论。

显然,问题出在org / mozilla / javascript / Parser周围,它们位于从我的maven配置中拉入的两个jar中:

<dependency>
<groupId>com.yahoo.platform.yui</groupId>
<artifactId>yuicompressor</artifactId>
<version>2.4.6</version>
</dependency>

有什么办法可以使用Maven排除项等方式解决,也可以通过升级我的YUI版本来解决。看起来很愚蠢,它只是行不通,我不想写一个自定义的类加载器。

请帮忙!


问题答案:

我自己重新打包了yuicompressor,以包括大部分犀牛源,从而解决了这个问题。请参阅我对霍华德·刘易斯·希普的答复。

重新包装的源​​代码可以在以下位置找到:http : //viscri.co.uk/labs/tapestry/yuicompressor-rhino-
bugfix-5.0.jar
。只需将其添加到您的pom中:

<dependency>
   <groupId>yuicompressorbugfix</groupId>
   <artifactId>yuicompressor-rhino-bugfix</artifactId>
   <version>5.0</version>
</dependency>

如果您没有运行自己的版本的nexus,则必须将其安装在要构建的计算机上。我认为这是您需要的命令:http : //maven.apache.org/guides/mini/guide-3rd-party-jars-
local.html

您还需要排除挂毯引入的yuicompressor版本:

<dependency>
   <groupId>org.apache.tapestry</groupId>
   <artifactId>tapestry-yuicompressor</artifactId>
   <version>5.3.2</version>
   <exclusions>
       <exclusion>
             <groupId>com.yahoo.platform.yui</groupId>
             <artifactId>yuicompressor</artifactId>
       </exclusion>
   </exclusions>

这应该工作。