启动我的应用程序时出现IncompatibleClassChangeError

问题描述 投票:0回答:1

我在尝试在Amazon Linux机器上启动应用程序时收到以下错误。

Caused by: java.lang.IncompatibleClassChangeError: class com.google.common.cache.CacheBuilder$3 has interface com.google.common.base.Ticker as super class
        at java.lang.ClassLoader.defineClass1(Native Method)
java maven deployment guava
1个回答
0
投票

该错误意味着CacheBuilder的字节码要求Ticker是一个Java类,但它是一个接口。

您在类路径上有两个版本的Guava,或者您正在使用不同版本的Guava启动应用程序。

尝试mvn dependency:tree并寻找重复。如果看起来不错,请在VM上运行应用程序时检查类路径。

在极少数情况下,有人可能“聪明”并将com.google.common.base.Ticker(或CacheBuilder)的字节码复制到他们的JAR中。尝试在所有JAR上搜索文本以查找候选项或编写打印结果的单元测试

getClass().getClassLoader().getResources("com/google/common/base/Ticker.class");

看谁愿意贡献(应该只返回一个网址)。如果有效,请为CacheBuilder做同样的事情。

© www.soinside.com 2019 - 2024. All rights reserved.