Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jboss上的Yui压缩程序StringIndexOutOfBoundsException_Java_Javascript_Jboss_Yui_Tapestry - Fatal编程技术网

Java jboss上的Yui压缩程序StringIndexOutOfBoundsException

Java jboss上的Yui压缩程序StringIndexOutOfBoundsException,java,javascript,jboss,yui,tapestry,Java,Javascript,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.pl

使用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)
位于java.lang.String.substring(String.java:1934)
位于com.yahoo.platform.yui.compressor.JavaScriptCompressor.printSourceString(JavaScriptCompressor.java:267)
位于com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:330)
位于com.yahoo.platform.yui.compressor.JavaScriptCompressor.(JavaScriptCompressor.java:533)
它在通过IDE启动时可以工作,但在部署到jboss时却不能。这个地方:也讨论过同样的问题

显然,问题在于org/mozilla/javascript/Parser位于从我的maven配置中拉入的两个JAR中:

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

com.yahoo.platform.yui
真空压缩机
2.4.6
有什么方法可以解决这个问题,我可以使用maven排除等,或者升级我的YUI版本。这似乎很愚蠢,因为它根本不起作用,我不想编写自定义类加载器


请帮忙

真的,你在JBoss中遇到了类加载器问题吗


您必须对竞争对手的rhino JAR文件进行某种排除。为什么Rhino在课堂上?这可能是JBoss的一个可选功能,您可以通过这种方式关闭并避免冲突。

我自己重新打包yuicompressor以包含大部分rhino源代码,从而解决了这个问题。见我对Howard M.Lewis Ship的回复

可以在此处找到重新打包的源:。只需将此添加到您的pom中:

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

yuicompressorbugfix

您还需要排除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>

org.apache.tapestry
织锦压缩机
5.3.2
com.yahoo.platform.yui
真空压缩机


这应该是可行的。

解决方案:适用于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>

com.yahoo.platform.yui

注意:如果通过其他方式在类路径中有一个rhino,那么您可能会再次遇到此错误。

所选答案(截至2014年9月26日)的jar不再存在

因此,我创建了一个yuicompressor分支,其中整个rhino包嵌入到yuicompressor包中,并将其命名为yui

只需克隆repo并运行
ant
即可获得jar


希望这能帮助其他遇到这个问题的人。

Rhino走上了类路径,因为maven打包的yuicompressor依赖于它。基本上yui覆盖了几个rhino类,但不是全部,如果rhino被排除,则会导致classNotFound异常,如果rhino未被排除,则会导致上述问题。我打算就此向tapestry邮件列表发送一封邮件,因为我认为在tapestry 5.3中使用yui会导致同样的问题。最后,我把rhino和yui一起放在自己定制的罐子里,他们在这里描述了问题:。他们说这个问题已经解决了,但我怀疑这是怎么写的。今天下载的源代码包,至少没有做任何事情。我也有这个问题!该死!我的是tomcat 6,你重新打包了吗?最后,我把大部分犀牛来源都塞进了我的包裹里。如果你有几天的时间,我可能可以在github上提供这个包?我已经做了同样的重新打包,我正在等待YUI团队的工作修复,但我相信它会被修复,按照他们的编程方式……我提出了一个错误:是的,它们纯粹的小蚂蚁生物完全基于类加载器中的库序列,这病得我都快喘不过气来了!它们之所以能工作是因为它们使用ant,而在应用服务器上则相反。我已经完成了你所描述的包装,并且它可以正常工作。