我在调试配置中指定的顶级调试类是MyDebugClass
. 再往下main
看,它会尝试启动与在同一个包中的类ProblemClass
的实例,但它在构造函数调用行上出错,说“找不到源”。项目编译良好,.class 文件确实在目标目录中,与 .class 的位置相同。MyDebugClass
MyDebugClass
我认为类路径可能有些奇怪,因此不包含调试主程序的同一个包,所以我在同一个目录中创建了一个测试类并尝试调用它的一个实例并且它有效。所以这不是问题。
我还添加了以下代码MyDebugClass.main
来尝试调试问题:
ClassLoader loader = ProblemClass.class.getClassLoader();
Class probCls = loader.loadClass("mypackage.ProblemClass");
//here below is where it errors out
probCls.newInstance();
什么可能导致这种类加载问题?类路径中有一大堆 jar,那么其中一个是否包含相同的类限定符,并且类加载器试图从那里获取它,而不是调试构建路径中指定的目标目录?我如何找到类加载器尝试加载类的位置,例如寻找.class 文件或某个jar 的文件系统路径?