ロードされるすべてのクラスの名前とそのソース (どこから来たのか) を出力する 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アプリでこれを行っていないので、それが使用するカスタムClassLoaderについては知りません。