最近、JSF コードのデバッグに 8 時間費やしました。失敗の原因はClassNotFoundExceptionで、コンソール出力にもログ ファイルにも表示されませんでした。
通常の Java アプリケーションではThread.setDefaultUnhandledExceptionHandler(...)、キャッチされていない例外をログに記録するために使用できます。しかし、私の JSF アプリケーションでは役に立ちませんでした。
JSF アプリケーションでキャッチされていない実行時例外のロギング (理想的には、ログ ファイルとコンソール、最小限に - 標準エラー) を実装するにはどうすればよいですか?
アップデート:
- 参照されるJSF アプリケーション プロジェクト
app(Maven 依存関係を含む) プロジェクトlogicとcommonsバージョン 1。 commonsプロジェクト バージョン 2 には class が含まれていましたX。commonsプロジェクト バージョン 1 には class が含まれていませんでしたX。logiccommonsプロジェクトが必要で、バージョン 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());
}
}
はEntryPageControllerJSFManagedBeanです。