这来自一个真实世界的例子,一些Hibernate类继承了Antlr类,并尝试填充一些只在最近的Antlr版本中引入的字段。确保运行时Java超类正确
HibernateClass ---subclasses---> AntlrClass
HibernateClass uses AntlrClass.fieldX
如果有人在运行时部署一个较旧的ANTLR的图书馆,这个超字段将不存在,一个NoSuchFieldError
将被抛出。
确保您在运行时动态绑定的超类是兼容版本的标准Java/JVM方式是什么?
那么,当使用错误的类版本时,你希望**发生什么?我认真地怀疑你可以做得比抛出一个错误好得多。在抛出错误时,最多你可以影响*(将第一次访问放在静态初始化块中,并且在加载类时确保它发生)。 –
您想在应用初始化时发现错误,例如“不兼容JAR”或什么的。您可能正在寻找特定的版本范围。您可能需要相应地调整您的代码。 – Nick