アーティクル - CS439388
Tomcat を 9.0.97 以降にアップデートした後、ThingWorx Java 拡張機能がエラー「実行時に Java クラス定義が見つかりませんでした」(NoClassDefFoundError) で失敗する
修正日: 12-May-2025
適用対象
- ThingWorx Platform 9.4
- Tomcat 9.0.97 and later 10 and 11
説明
- 拡張機能から JAR をロードしようとすると、クラス定義が見つからないというエラーが発生します。
- ApplicationLog のエラー メッセージ:
[L: ERROR] [O: ctcpReflectionProcessor] ... Cause(<CLASS_NAME>), Reason(A Java class definition was not found at runtime.), Possible Resolutions([1]=Add the Jar file that contains the missing class in your Extension packaging zip., [2]=Add the Jar file that contains the missing class in your Extension manifest file as a Jar Resource.)- ThingWorxはカスタムURLClassLoaderを使用して実行時に拡張機能(JAR)を動的にロードします。
- Tomcat 9.0.97では、検索されたが見つからなかったクラス用のLRUキャッシュ(
notFoundClassResourceCacheSize)が導入されました。 - 拡張機能が動的にロードされる前に、Tomcatはすでにクラスを見つけようとしている可能性があります。
- 当時JARが利用できなかったため、Tomcatはこのクラスを「見つからない」としてキャッシュします。
- JARを動的に追加した後でも、Tomcatはクラスを再度検索しようとせず、クラスがまだ見つからないと仮定してNoClassDefFoundErrorをスローします。
最新バージョンはこちらを参照ください CS439388