我在尝试在Amazon Linux机器上启动应用程序时收到以下错误。
引起:java.lang.IncompatibleClassChangeError:class com.google.common.cache.CacheBuilder $ 3有……
该错误意味着字节码 CacheBuilder 预计 Ticker 是一个Java类,但它是一个接口。
CacheBuilder
Ticker
您在类路径上有两个版本的Guava,或者您正在使用不同版本的Guava启动应用程序。
尝试 mvn dependency:tree 并寻找重复。如果看起来不错,请在VM上运行应用程序时检查类路径。
mvn dependency:tree
在极少数情况下,有人可能会“聪明”并复制字节码 com.google.common.base.Ticker (要么 CacheBuilder 进入他们的JAR。尝试在所有JAR上搜索文本以查找候选项或编写打印结果的单元测试
com.google.common.base.Ticker
getClass().getClassLoader().getResources("com/google/common/base/Ticker.class");
看谁愿意贡献(应该只返回一个网址)。如果可行,请执行相同操作 CacheBuilder 。