Tomcat启动时出错 - com.google.inject.internal.util。$ ComputationException:java.lang.ArrayIndexOutOfBoundsException

时间:2016-10-12 08:42:35

标签: java tomcat jersey guice

我正在尝试在同一台服务器上运行另一个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但它没有改变任何内容。

如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

它在应用程序中评论lambda表达式后起作用。但是,我忘了我已经包含了.jar库,它也使用了Guice 3,所以在将它更新到Guice 4之后,Tomcat启动了:

<dependency>
    <groupId>com.google.inject</groupId>
    <artifactId>guice</artifactId>
    <version>4.1.0</version>
</dependency>