运行项目时,我得到以下错误
Caused by: java.lang.ClassNotFoundException: com.foo.coupon.service.FullGiftsActivityService
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1858)
然后我想知道使用哪个类FullGiftsActivityService
所以我添加了Java Exception Breakpoints
java.lang.ClassNotFoundException
,然后我在下面的代码中找到了断点
// findClass:381, URLClassLoader(java.net)
if (result == null) {
throw new ClassNotFoundException(name); // 381
}
我能理解它,因为它有一个显式的throw语句,然后我恢复,它跳转到
// loadClass:436, ClassLoader(java.lang)
return c;
} // 436
但这次我无法理解,为什么会跳到这段代码?
另外两种情况都有name
变量并且是String类型,所以为了忽略这些噪声,我添加了这个条件
为什么它说cannot resolve symbol 'name'
,那么如何只捕获这个类 - FullGiftsActivityService
?
答案 0 :(得分:0)
最好在指定行上的WebappClassLoaderBase中放置断点而不是捕获ClassNotFoundException - 很多时候会抛出ClassNotFoundException并将其作为webapp的类加载机制的一部分捕获,因此所有'噪音'你看到了。这个名字'只有在定义了name的块中捕获到异常时才有意义。你可能不在正确的街区。
一般情况下,如果您在tomcat中遇到类加载问题,我会调查org.apache.catalina.loader的日志记录进行调试,而不是尝试使用调试器。