在我们的应用程序中,我们看到“java.lang.IncompatibleClassChangeError:vtable stub”随机弹出,很少见。我们进行了干净的重建,因此构建环境中的netty jar文件与运行环境中的相同。
代码是:
@Override
protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer)
throws CorruptedFrameException
{
...
buffer.readShort();
int subLength = buffer.readShort();
...
}
第一个buffer.readShort()运行良好,但第二个buffer.readShort()可能会随机抛出此错误。问题类似于What causes "java.lang.IncompatibleClassChangeError: vtable stub"?。它使用jdk 1.6.0_16运行,看起来像未解决。
java版本是
0101C2:~ # java -version
java version "1.8.0_65"
Java(TM) SE Embedded Runtime Environment (build 1.8.0_65-b17, headless)
Java HotSpot(TM) Embedded Client VM (build 25.65-b01, mixed mode)
更新