java.lang.IllegalAccessError: 尝试访问com.google.common.collect.MapMaker.makeComputingMap()方法,来自WeldMessageConveyor

10

当我尝试在Weblogic12上部署我的Web应用程序时,出现以下异常:

weblogic.application.ModuleException: java.lang.IllegalAccessError: tried to access method com.google.common.collect.MapMaker.makeComputingMap(Lcom/google/common/base/Function;)Ljava/util/concurrent/ConcurrentMap; from class org.jboss.weld.logging.WeldMessageConveyor
at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140)
at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:213)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:208)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
Truncated. see log file for complete stacktrace
Caused By: java.lang.IllegalAccessError: tried to access method com.google.common.collect.MapMaker.makeComputingMap(Lcom/google/common/base/Function;)Ljava/util/concurrent/ConcurrentMap; from class org.jboss.weld.logging.WeldMessageConveyor
at org.jboss.weld.logging.WeldMessageConveyor.<init>(WeldMessageConveyor.java:61)
at org.jboss.weld.logging.WeldMessageConveyerFactory.getDefaultMessageConveyer(WeldMessageConveyerFactory.java:27)
at org.jboss.weld.logging.LoggerFactory.<init>(LoggerFactory.java:37)
at org.jboss.weld.logging.LoggerFactory.loggerFactory(LoggerFactory.java:51)
at org.jboss.weld.bootstrap.WeldBootstrap.<clinit>(WeldBootstrap.java:126)
Truncated. see log file for complete stacktrace

有人知道原因吗?我的应用程序使用Errai。


3
根据这个其他问题,你似乎在使用的guava版本上遇到了一个类加载器问题。 - JoseM
那真的有帮助,谢谢。 - Ratshiḓaho Wayne
1个回答

16

根据 @JoseM 的评论,此链接 很有帮助。目前我采用的快速解决办法是将我的 guava 库从 16.0.1 降级到 14.0.1


这个错误的原因是Weblogic依赖于较旧版本的Guava,而您的依赖项中有更新的版本。在新版本的Guava中,makeComputingMap已被删除。降级Guava并不是最好的选择。相反,您应该升级您的Weblogic服务器,以便它具有最新的Guava版本。 - reynev
非常感谢,我在selenium中遇到了同样的问题:'java.lang.IllegalAccessError: tried to access method com.google.common.util.concurrent.SimpleTimeLimiter',将版本从3.6.0降级到3.4.0解决了问题。希望能对其他人有所帮助。 - Japheth Odonya
你好,我是Aditya Neurgaonkar。我正在使用guava-18.0.jar。在Windows上我没有遇到这个问题。但在Unix环境中,您能确认这是否是操作系统特定的问题吗? - Aditya Neurgaonkar
@AdityaNeurgaonkar,Java并不是特定于操作系统的。只需检查应用程序加载的库即可。 - Ratshiḓaho Wayne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接