是什么导致了“java.lang.IncompatibleClassChangeError: vtable stub”?在我们的应用程序中,我们看到这个错误随机弹出并且很少出现(到目前为止只有两次,我们经常运行它)。它不容易重现,即使在重新启动应用程序时,使用相同的 jvm/jars 而不重建。
至于我们的构建过程,我们清理所有类/jar 并重建它们,因此这与其他人遇到的问题不同,他们在一个类中进行了更改但没有重新编译其他一些依赖类。
这与与 IncompatibleClassChangeError 相关的其他一些问题不同——它们都没有提到“vtable stub ”。事实上,在搜索“IncompatibleClassChangeError “vtable stub””时,谷歌搜索结果出乎意料的少。
编辑:
- 使用 JDK 1.6.0_16。
- 我们没有使用 Java 序列化。
- 我们不进行字节码操作。
- 如前所述,我们正在进行“干净的构建”,因此没有从之前的构建中遗留下来的类。
最佳答案
JVM 字节码世界中的 API 损坏。查找 Javadoc :
Thrown when an incompatible class change has occurred to some class definition. The definition of some class, on which the currently executing method depends, has since changed.
要寻找的罪魁祸首是对静态最终文字值的更改,因为这些值在字节代码中被复制为“优化”。
编辑:这可以像库升级的结果一样简单,我所知道的唯一修复方法是干净重建。
关于java - 是什么原因导致 "java.lang.IncompatibleClassChangeError: vtable stub"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3041032/