当前位置: 首页 > 面试题库 >

jboss上的Yui压缩程序StringIndexOutOfBoundsException

丁和歌
2023-03-14
问题内容

当用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>

这应该工作。



 类似资料:
  • 我正在使用Julia的ZipFile包来提取和处理csv文件。没问题,但是当我遇到zip文件中的zip文件时,我也想处理它,但是遇到了一个错误。 Julia ZipFile文档如下:https://zipfilejl.readthedocs.io/en/latest/ 对如何做到这一点有什么想法吗?

  • tar [-]c|x|u|r|t[z|j][v] -f 归档文件 [待打包文件] 将多个文件打包为一个归档文件,可以在打包的同时进行压缩。支持的格式为 tar(归档)、gz(压缩)、bz2(压缩率更高,比较耗时) 操作选项 -c 创建 -x 解包 -u 更新 -r 添加 -t 查看 -d 比较压缩包内文件和文件 -A 将 tar 文件添加到归档文件中 格式选项 -z 使用 gz 压缩格式 -j 使

  • 我的理解是将块大小信息存储在元块头中,只有块的最终未压缩大小,没有关于压缩长度的信息(9.2)。我猜测需要创建一个包装器,以便在多个线程中使用它,或者可能类似于马克·阿德勒的。 在这种情况下,线程原则是否适用于Brotli,就像它们适用于gzip一样,或者在多线程实现中是否有任何可预见的问题需要注意?

  • 问题内容: 我正在使用php的功能来执行HTTP请求。为了节省带宽,我决定使用添加标题。 显然,输出一个gzip编码的字符串,所以我用来解码该编码的字符串,但是将作为参数传递的数据出错。 我知道还有另一个功能可以解压缩压缩后的数据,但是它不包含在我的PHP版本中(也许仅在SVN上可用)。 我知道cUrl可以即时解码gzip流(没有任何问题),但是有人建议我使用它而不是cUrl。 您是否知道以其他方

  • Tango拥有一个默认的压缩中间件,可以按照扩展名来进行文件的压缩。同时,你也可以要求某个Action自动或强制使用某种压缩。比如: type CompressExample struct { tango.Compress // 添加这个匿名结构体,要求这个结构体的方法进行自动检测压缩 } func (CompressExample) Get() string { return f

  • 所有基于http协议的服务器组件均支持压缩,请求头Accept-Encoding的值需要包含deflate或者gzip。 即便请求头Accept-Encoding的值包含deflate或者gzip,服务器还会参考静态变量http_server::zip_min_size(默认1024,即1KB)和http_server::zip_max_size(默认307200,即300KB)来决定是否压缩:仅