gpt4 book ai didi

Java 运行时依赖

转载 作者:行者123 更新时间:2023-12-02 11:44:11 30 4
gpt4 key购买 nike

有没有办法确定 Java 应用程序所需的所有运行时依赖项是否存在于类路径中?

我猜想通过所有可能的执行路径多次运行应用程序,并检查是否抛出“未找到类”异常是确保所有需要的类都在类路径中的一种方法,但这并不总是一个选项当然是复杂的应用程序。

最佳答案

Is there a way to determine if all needed runtime dependencies for a Java application exist in the class path?

这在一般情况下是不可能的,因为可访问的类文件可能不包含所有必要的信息。特别是,应用程序可能依赖于仅在运行时识别的类。

java 命令(尽管它本身不是用 Java 实现的)是说明性的:它接受应用程序主类的名称作为命令行参数。因此,它需要什么类不能静态地确定;它们取决于命令行参数。 Java 程序可以做类似的事情,并且这种使用在某些领域是常规的。例如,JDBC 驱动程序通常按名称反射加载,并且驱动程序名称通常记录在配置文件中而不是硬编码。

另一方面,类加载器可以从远程源加载类并动态合成类,因此即使您在文件系统上的任何位置都看不到特定的类,也很难确定它在运行时不可用。有时还会玩其他有趣的类加载器游戏。

现在,对于不受上述类加载考虑的应用程序,原则上可以通过从应用程序的主类开始的递归检查来确定所有需要的类,并尝试加载所有这些类类来验证它们是否可用。然而,即使如此,也可能会遇到类版本不匹配的问题,因此即使所有所需的(按名称)类都可用,它们也无法正常工作。

因此,总的来说,执行您所描述的事后确定的唯一可靠方法是测试所有代码路径,以及可能影响所需类的所有相关数据变化。

关于Java 运行时依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48324411/

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