アーティクル - CS439388

Tomcat を 9.0.97 以降にアップデートした後、ThingWorx Java 拡張機能がエラー「実行時に Java クラス定義が見つかりませんでした」(NoClassDefFoundError) で失敗する

修正日: 12-May-2025   


注記:ここに記載されている情報は、お客様の利便性向上のため機械翻訳ソフトを使用しています。PTCは、ここに記載されている情報の翻訳の正確性について、一切の責任を負いませんので、ご了承ください。英語の原文を参照するには、こちら。この機械翻訳に関する詳細は、こちら。
お知らせいただき、ありがとうございます。この機械翻訳をレビューします。

適用対象

  • 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