有没有办法确定在运行时从哪些 JAR 加载哪些类?
我敢肯定,我们以前都经历过 JAR hell 。我在解决项目中的 ClassNotFoundException
s 和 NoClassDefFoundError
s 时遇到了很多问题。我想避免在 JAR 中找到一个类的所有实例,并避免在导致 CNFE 找到罪魁祸首的代码上使用消除过程。
任何分析或管理工具会为您提供此类信息吗?
这个问题非常烦人,纯粹是因为我们应该在加载类的时候就知道这些信息。必须有办法找到它,或者记录下来并找到它,但我不知道有什么方法可以做到这一点,是吗?
我知道 OSGi 和版本化的 bundle /模块旨在解决这个问题......但它似乎不会很快消失。
注意:我找到了 question是我的问题的一个子集,与从版本化 jar 加载的类有关。
有点相关,这篇文章解释了在 JAR(当前目录下)或 M2_REPO 中搜索类的策略:JarScan, scan all JAR files in all subfolders for specific class
也有些相关,JBoss Tattletale
最佳答案
将 -verbose:class
开关传递给 java
命令将打印每个加载的类及其加载位置。
Joops也是提前查找缺失类(class)的好工具。
关于java - 如何探索从哪些 JAR 加载哪些类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/947182/