這來自一個真實世界的例子,一些Hibernate類繼承了Antlr類,並嘗試填充一些只在最近的Antlr版本中引入的字段。確保運行時Java超類正確
HibernateClass ---subclasses---> AntlrClass
HibernateClass uses AntlrClass.fieldX
如果有人在運行時部署一個較舊的ANTLR的圖書館,這個超字段將不存在,一個NoSuchFieldError
將被拋出。
確保您在運行時動態綁定的超類是兼容版本的標準Java/JVM方式是什麼?
那麼,當使用錯誤的類版本時,你希望**發生什麼?我認真地懷疑你可以做得比拋出一個錯誤好得多。在拋出錯誤時,最多你可以影響*(將第一次訪問放在靜態初始化塊中,並且在加載類時確保它發生)。 –
您想在應用初始化時發現錯誤,例如「不兼容JAR」或什麼的。您可能正在尋找特定的版本範圍。您可能需要相應地調整您的代碼。 – Nick