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>
这应该工作。