java - 如何探索从哪些 JAR 加载哪些类?

标签 java profiling classloader jar

有没有办法确定在运行时从哪些 JAR 加载哪些类?

我敢肯定,我们以前都经历过 JAR hell 。我在解决项目中的 ClassNotFoundExceptions 和 NoClassDefFoundErrors 时遇到了很多问题。我想避免在 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/

相关文章:

java - 如何使用 ASM 来欺骗 HelloWorld.scala?已加载到 JVM 但未找到?

java - 如何删除单链表中的当前节点?

java - 为什么不使用更具大小确定性的类型来实现 BitSet?

java - 将 Oracle Forms 10 转换为 Java

c++ - 带循环检测的 Callgrind 性能分析

java - 如何(不)处理高内存使用情况?

java - 具有多个不同类加载器的单例类

java - apache commons 成像写入图像错误

assembly - 我如何知道汇编指令被命中的次数

java - 动态编译源文件时如何为JavaCompiler提供接口(interface)?