我刚刚升级了一个库,而另一个开始投掷NoSuchFieldError
。如果这个领域被删除了,那很好。但它仍然存在。它只是被弃用。NoSuchFieldError但字段有
Hibernate.TIMESTAMP.nullSafeGet(null, null); // << works
new PersistentDateTime().nullSafeGet(null, null); // << throws NoSuchFieldError
其中所述nullSafeGet
方法具有:
Hibernate.TIMESTAMP.nullSafeGet(resultSet, string);
(当然,未发现该字段是TIMESTAMP
)
库的正确版本是在类路径(otherewise我的手动测试不会有效)
为什么会这样呢?
更新:我创建了一个新类,覆盖旧的类,并使用完全相同的代码定义相同的方法,现在它可以工作。任何想法在字节码中应该发生什么?
重新打开此讨论的道歉,但我很好奇 - 这将如何导致NoSuchFieldError?我期望一个程序使用库中定义的静态最终变量来使用旧值,而不是访问它时的新值。 – 2014-09-16 04:18:51