最近,我花了8个小时调试我的JSF代码。失败的原因是ClassNotFoundException
,它既没有出现在控制台输出中,也没有出现在日志文件中。
在普通的Java应用程序中,我可以使用Thread.setDefaultUnhandledExceptionHandler(...)
来记录未捕获的异常。但它对我的JSF应用程序没有帮助。
如何在JSF应用程序中实现未捕获的运行时异常的日志记录(理想情况下 - 最小化日志文件和控制台 - 标准错误)?
更新
app
(包含Maven依赖项)项目logic
和commons
版本1. commons
项目版本2包含一个班级X
。commons
项目版本1不包含课程X
。logic
项目必需且包含对commons
版本2的依赖。ClassNotFoundException
发生在课程X
上。这个测试案例可以重现这个问题:
@Test
public void test() {
try {
EntryPageController objectUnderTest = new EntryPageController();
objectUnderTest.init();
objectUnderTest.resetButtonAction();
objectUnderTest.simulateYearButtonAction();
} catch (Throwable exception) {
LOGGER.error("", exception);
Assert.fail(exception.getMessage());
}
}
其中EntryPageController
是JSF ManagedBean
。