【发布时间】:2016-10-12 08:42:34
【问题描述】:
我正在尝试在同一台服务器上运行另一个 Tomcat 实例。当我在第一个 Tomcat 7 上部署应用程序(Maven、Java 8、Guice 3.0、Jersey 1.19)时,它启动并运行良好。但是,另一个 Tomcat 7 中的相同应用程序无法正常启动:
java.util.logging.ErrorManager: 5
com.google.inject.internal.util.$ComputationException: java.lang.ArrayIndexOutOfBoundsException: 57912
at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:553)
at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:419)
at com.google.inject.internal.util.$CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2041)
at com.google.inject.internal.util.$StackTraceElements.forMember(StackTraceElements.java:53)
...
Caused by: java.lang.ArrayIndexOutOfBoundsException: 57912
at com.google.inject.internal.asm.$ClassReader.<init>(Unknown Source)
at com.google.inject.internal.asm.$ClassReader.<init>(Unknown Source)
at com.google.inject.internal.asm.$ClassReader.<init>(Unknown Source)
我尝试过Why is a lambda expression breaking guice error handling when i try to start jetty? 讨论答案,并从 Guice 3 切换到 4,但没有任何改变。
如何解决这个问题?
【问题讨论】:
-
两个tomcat的java版本一样吗?我记得 Java7 -> Java8 中有关数组排序顺序或类似问题的一些问题,因此某些应用程序无法启动(其中包括 SoapUI)。
-
当我在两个文件夹中执行 ./catalina.sh 版本时,我得到相同的 - JVM 版本:1.8.0_91-b14
-
它在应用程序中注释 lambda 表达式后工作。但是,我忘记了我已经包含了使用 Guice 3 的库。所以在将它更新到 Guice 4 后,Tomcat 启动了。
-
假设您可以指定您的最后一条评论作为该问题的解决方案 :-)