我有一个 javaagent,它打印出所有加载的类的名称,以及它们的来源(它们来自哪里)。
public byte[] transform(ClassLoader loader, String className, Class redefiningClass, ProtectionDomain domain, byte[] bytes) throws IllegalClassFormatException {
System.out.print("Loading class: " + className + "\t");
if (domain != null) {
final CodeSource cs = domain.getCodeSource();
if (cs != null) {
System.out.println(cs.getLocation());
}
}
System.out.println();
return bytes;
}
对于某些类,它会打印出“null”(意味着 cs.getLocation() 为 null)。为什么会这样,还有什么可以查看这些课程的来源吗?请注意,我不是在我自己的 Java 应用程序上执行此操作,因此我不知道它使用的任何自定义类加载器。