启动我的应用程序时出现 IncompatibleClassChangeError
IncompatibleClassChangeError while starting the my application
当我尝试在 Amazon Linux 机器上启动我的应用程序时出现以下错误。
Caused by: java.lang.IncompatibleClassChangeError: class com.google.common.cache.CacheBuilder has interface com.google.common.base.Ticker as super class
at java.lang.ClassLoader.defineClass1(Native Method)
错误意味着 CacheBuilder
的字节码期望 Ticker
是 Java class 但它是一个接口。
您在 class 路径上有两个版本的 Guava,或者您正在使用与您之前构建的不同版本的 Guava 启动应用程序。
尝试 mvn dependency:tree
并查找重复项。如果看起来不错,请在 运行 应用程序在您的 VM 上检查 class 路径。
在极少数情况下,有人可能 "clever" 并将 com.google.common.base.Ticker
(或 CacheBuilder
)的字节码复制到他们的 JAR 中。尝试对所有 JAR 进行文本搜索以找到候选者或编写打印
结果的单元测试
getClass().getClassLoader().getResources("com/google/common/base/Ticker.class");
看谁喜欢投稿(应该return就一个URL)。如果可行,请对 CacheBuilder
.
执行相同操作
当我尝试在 Amazon Linux 机器上启动我的应用程序时出现以下错误。
Caused by: java.lang.IncompatibleClassChangeError: class com.google.common.cache.CacheBuilder has interface com.google.common.base.Ticker as super class
at java.lang.ClassLoader.defineClass1(Native Method)
错误意味着 CacheBuilder
的字节码期望 Ticker
是 Java class 但它是一个接口。
您在 class 路径上有两个版本的 Guava,或者您正在使用与您之前构建的不同版本的 Guava 启动应用程序。
尝试 mvn dependency:tree
并查找重复项。如果看起来不错,请在 运行 应用程序在您的 VM 上检查 class 路径。
在极少数情况下,有人可能 "clever" 并将 com.google.common.base.Ticker
(或 CacheBuilder
)的字节码复制到他们的 JAR 中。尝试对所有 JAR 进行文本搜索以找到候选者或编写打印
getClass().getClassLoader().getResources("com/google/common/base/Ticker.class");
看谁喜欢投稿(应该return就一个URL)。如果可行,请对 CacheBuilder
.