gpt4 book ai didi

java - 确保运行时 Java 父类(super class)是正确的

转载 作者:行者123 更新时间:2023-12-01 15:22:36 24 4
gpt4 key购买 nike

这来自一个现实世界的示例,一些 Hibernate 类继承了 Antlr 类,并尝试填充某些字段,这些字段仅在最近的 Antlr 版本中引入。

HibernateClass ---subclasses---> AntlrClass
HibernateClass uses AntlrClass.fieldX

如果有人在运行时部署较旧的 Antlr 库,则此父类(super class)字段将不存在,并且将抛出 NoSuchFieldError

确保在运行时动态绑定(bind)的父类(super class)是兼容版本的标准 Java/JVM 方法是什么?

最佳答案

看看这个 -

com.mobile.mail 包;

 import java.io.IOException;
import java.util.Map;
import java.util.jar.Attributes;
import java.util.jar.JarFile;
import java.util.jar.Manifest;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
Map<String,Attributes> map = null;
try {
JarFile file = new JarFile("Your library file path");
Manifest manifest = file.getManifest();
System.out.println(manifest.getMainAttributes().getValue("Specification-Version"));
System.out.println(manifest.getMainAttributes().getValue("Implementation-Version"));
map = manifest.getEntries();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

现在您应该首先检查需要检查的每个 jar 文件的文件版本。如果发现较旧的文件,则仅显示错误消息。

关于java - 确保运行时 Java 父类(super class)是正确的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10684032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com