luk*_*ewm 11 javascript java jboss yui tapestry
当用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)
Run Code Online (Sandbox Code Playgroud)
它通过我的IDE启动时工作,但当部署到jboss时它没有.这个地方:http://yuilibrary.com/forum/viewtopic.php?p = 200686对同一个问题进行了一些讨论.
显然问题是org/mozilla/javascript/Parser在我的maven配置中拉入的两个罐子里面:
<dependency>
<groupId>com.yahoo.platform.yui</groupId>
<artifactId>yuicompressor</artifactId>
<version>2.4.6</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
有什么方法可以使用maven排除等或通过升级我的YUI版本来解决这个问题.它似乎很无聊,它只是不起作用,我不想写一个自定义类加载器.
请帮忙!
小智 8
解决方法:适用于JBoss AS 7.1.1.Final和YUICompressor 2.4.7
从依赖中排除rhino:
<dependency>
<groupId>com.yahoo.platform.yui</groupId>
<artifactId>yuicompressor</artifactId>
<version>${yuicompressor.version}</version>
<exclusions>
<exclusion>
<groupId>rhino</groupId>
<artifactId>js</artifactId>
</exclusion>
</exclusions>
</dependency>
Run Code Online (Sandbox Code Playgroud)
为什么?请参阅https://github.com/greenlaw110/greenscript/pull/29#issuecomment-4017147
注意:如果你通过其他方式在classpath中有一个rhino,那么你似乎会再次遇到这个错误.
我通过自己重新包装yuicompressor来解决这个问题,包括大部分的犀牛来源.请参阅我对Howard M. Lewis Ship的回复.
重新包装的来源可以在这里找到: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>
Run Code Online (Sandbox Code Playgroud)
如果您没有运行自己的nexus版本,则必须将其安装在要构建的计算机上.这是我需要的命令:http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html
您还需要排除tapestry所引入的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>
Run Code Online (Sandbox Code Playgroud)
这应该工作.
| 归档时间: |
|
| 查看次数: |
4354 次 |
| 最近记录: |