我在尝试在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)
该错误意味着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
做同样的事情。