Java 此.getClass().getClassLoader()-类属性解释

Java 此.getClass().getClassLoader()-类属性解释,java,classloader,Java,Classloader,我正在寻找一点解释,我相信我有一个类加载器问题,所以我尝试查看Axis2 Web服务已加载的类的列表 作为对代码中出现问题的地方的测试,我在代码中放置了一个调试点,该调试点由到tomcat的远程调试连接触发。在eclipse中,我添加了自己的watch表达式 this.getClass().getClassLoader() 如果然后单击privateclassesmember属性,我可以看到一个很大的类列表,这些类显然是由这个ClassLoader加载的,但是我看不到对实例类的引用,即这个引用

我正在寻找一点解释,我相信我有一个类加载器问题,所以我尝试查看Axis2 Web服务已加载的类的列表

作为对代码中出现问题的地方的测试,我在代码中放置了一个调试点,该调试点由到tomcat的远程调试连接触发。在eclipse中,我添加了自己的watch表达式

this.getClass().getClassLoader()

如果然后单击private
classes
member属性,我可以看到一个很大的类列表,这些类显然是由这个
ClassLoader
加载的,但是我看不到对实例类的引用,即
这个
引用的完全限定类名。为什么?肯定已经加载了吗?

它可能是由家长加载的。尝试通过调用
ClassLoader.getParent()
来爬升类加载器树,直到得到
null
@OldCurmudgeon如果我这样做
this.getClass().getClassLoader().findClass(“foo.bar”)
我得到一个链接错误,然后按照你的建议做,直到我有一个null的父级,所以它最终类似于
this.getClass().getClassLoader().getParent().getParent().getParent().getParent().getParent().getParent().findClass(“foo.bar”)
。这抛出了一个
ClassNotFoundException
,我一个接一个地删除了
getParent()
,每次它抛出一个
ClassNotFoundException
,直到我到达根
ClassLoader
并再次收到
LinkageError
。如果我这样做了
This.getClass().getClassLoader().loadeclass(“foo.bar”)
,它就会工作,但是如果我这样做
this.getClass().getClassLoader().getParent().loadClass(“foo.bar”)
它会抛出一个
ClassNotFoundException