1

ここに画像の説明を入力してくださいこれについてアドバイスが必要です...別のシステムのユーティリティとして機能するプログラムがあります。私のプログラムの機能は、データベースを監視し、特定の値を持つ特定のエントリを見つけることです。この値は、メインシステムがエントリをそれ以上処理できない特定の条件に遭遇したときに生成されます。特定の値が見つかると、私のプログラムはそれを処理するために必要な要件が利用可能かどうかを検証し、システムが処理を停止したメソッドを呼び出して、エントリを完了できるようにします。

私のプログラムは、メインシステムのメソッドを呼び出そうとするたびにエラーが発生します。コマンドプロンプトに、このエラー「スレッド「timer-0」の例外java.lang.NoClassDefFoundError」が表示されます。

メインプログラムは継続的に実行されていることに注意してください。エントリが終了するたびに、別のエントリを取得します。したがって、私のプログラムが、メインシステムで現在使用されているメソッドを呼び出している可能性があります。

エラーが私のプログラムによるものなのか、NoClassDefFoundErrorのように必要なメソッドが見つからないのか、またはスレッド「タイマー」の例外に従ってメインプログラムによって現在使用されているメソッドをプログラムが呼び出そうとしているのかはわかりません。 -0"。

また、メインプログラムと私のプログラムはスレッドを使用していません。

4

1 に答える 1

4

ANoClassDefFoundErrorは、プログラムがクラスパスにないクラスをロードしようとしたことを意味します (厳密には、クラスローダーによって解決できませんでした)。

これうまくいかない場合は、必要なライブラリをクラスパスに含めずに起動している可能性があります。

あるいは、リモート アプリからの内部クラスが呼び出し元に返され、インスタンス化できない場合に、Java アプリ間で通信する Java アプリでこれを見たことがあります。たとえば、リモート アプリが JDBC/ORM フレームワークを使用している場合、SQLException. この例外は、リモート呼び出しを通じてバブルアップし、特定のサブクラスをインスタンス化できないローカル アプリに戻ります。後者の場合は、リモート アプリのログを調べて、そこで発生している問題を特定できるかどうかを確認してください。

いずれにせよ、クラス/JAR をクラスパスに追加することでこれを解決できるはずです。正確にどれを解決するかは、単純に難しいかもしれません。「キッチン シンク」アプローチは、この特定の問題を乗り越えて、根本的な問題 (存在する場合) が何であるかを確認するのに役立つ場合があります。

于 2012-09-06T10:27:39.053 に答える