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