本項で説明している例外一覧
例外の説明
意味
NoClassDefFoundErrorは、通常のメソッド呼出し、あるいはnew式を使った新しいインスタンスの生成でJava VMまたはクラスローダがクラス定義をロードしようとしたとき、クラス定義が見つからない場合にスローされるものです。
現在実行中のクラスをコンパイルする時点では存在していましたが、その後見つからなくなっている場合などがあります。
ワークユニット環境設定のクラスパスに設定した環境変数に誤りがあります。
アプリケーション・コンパイル時のJDKの環境と、アプリケーション実行時のJDKの環境が異なります。
クラスまたはメソッド名の指定で大文字・小文字が異なります。
別のIJServerに配備されたEJBアプリケーションをlookupする場合に、クライアント配布物にクラスパスが設定されていません。
クラスパス上のクラスから、Webアプリケーション内部のクラスを参照しようしています。
同一パッケージであるが別クラスローダ上のクラスを呼び出そうとしています。
使用しているJavaのバージョンと、クライアント配布物をコンパイルしたJavaのバージョンが異なります。
ユーザの対処
ワークユニット環境設定のクラスパス定義について見直してください。
IJServer動作時に設定されるクラスパスは、コンテナ情報ログ(info.log)に出力されます。コンテナ情報ログでクラスパスの設定を確認してください。
アプリケーションをコンパイルしたJDKのバージョンとアプリケーションが動作するJDKのバージョンを同じにしてください。または、アプリケーションが動作するJDKの環境に合わせてアプリケーションを再コンパイルしてください。
アプリケーションの呼出し部分を正しいクラス/メソッド名に修正してください。
クライアント配布物にクラスパスを設定してください。
以下のいずれかの対処を行ってください。
クラスパス上のクラスからロードされるWebアプリケーション内のクラスを、クラスパス上に指定します。
Webアプリケーション内のクラスをロードするクラスが当該Webアプリケーションからしか使用されない場合、そのクラスをWebアプリケーションに含めてクラスパス指定から外します。
コンテキストクラスローダを使用してWebアプリケーション内のクラスをロードします。クラスローダの詳細については、JDKのマニュアルを参照してください。
ワークユニット環境設定のアプリケーション固有ライブラリパス定義を使用することにより回避できる場合があります。
EJBアプリケーションを配備したIJServerのJavaのバージョンと、EJBアプリケーションを呼び出すJavaのバージョンは一致させてください。配備したIJServerのJavaのバージョンより、EJBアプリケーションを呼び出すJavaのバージョンが低い場合は、旧バージョン・レベルのIJServerに配備したクライアント配布物を使用し、EJBアプリケーションを呼び出すJavaのバージョンと、クライアント配布物を生成したJavaのバージョンを一致させてください。
また、IJServerの「クラスローダの分離」の設定によっては、モジュール間で参照ができない場合があります。“J2EE ユーザーズガイド(旧版互換)”の“J2EEアプリケーションの設計”の“クラスローダの分離”参照し、アプリケーションの構成あるいはクラスローダの分離に誤りがないか確認してください。
可変情報
%s = アプリケーションが利用しているクラス名
意味
アプリケーションの動作環境の設定に誤りがあります。
ユーザの対処
アプリケーションが利用しているクラスへのCLASSPATHが正しく設定されているかを確認してください。
J2EEアプリケーションクライアントの場合は、以下も確認してください。
J2EEアプリケーションクライアント配布物へのCLASSPATHが正しく設定されているかを確認してください。
J2EEアプリケーションクライアントがインストールされ、正しく設定されていることを確認してください。
Interstageがインストールされているサーバマシン上でJ2EEアプリケーションクライアントを動作させている場合、Interstage Studioでインストールしたjavaコマンドを使用しているか確認してください。
ユーザの対処
以下についてそれぞれ確認してください。
クライアントが利用しているクラスへのCLASSPATHが正しく設定されているかを確認してください。
また、クライアント配布物へのCLASSPATHが正しく設定されているかを確認してください。
EJBサービスのクライアントがインストールされ、正しく設定されていることを確認してください。
Interstageがインストールされているサーバマシン上でクライアントアプリケーションを動作させている場合、Interstage Application Server、またはJava実行環境(Linuxの場合)でインストールしたjavaコマンドを使用しているか確認してください。
また、EJBアプリケーションでJavaアプレットの異常が発生し、Javaコンソールに上記の例外が出力した場合は、以下について確認してください。
Portable-ORBを使用している場合
“J2EE ユーザーズガイド(旧版互換)”の“JNDI”-“EJBを参照する場合の環境設定”を参照して、必要なCLASSPATHが正しく設定されているか、またORB(Object Request Broker)の指定が正しく行われているかを確認してください。
“J2EE ユーザーズガイド(旧版互換)”の“開発手順(Portable-ORB)”を参照して、必要なファイルがダウンロードされているかを確認してください。
Portable-ORBを使用していない場合
“J2EE ユーザーズガイド(旧版互換)”の“JNDI”-“EJBを参照する場合の環境設定”を参照して、必要なCLASSPATHが正しく設定されているかを確認してください。
注1) 当現象は以下の場合に発生することがあります。
JDK/JRE1.2.2でJIT(Just In Time)コンパイラ(デフォルト動作)を使用し、かつCLASSPATHが正しく設定されていない場合。
JITコンパイラを使用しない環境では、NoClassDefFoundError: “クライアントが利用しているクラス名”が発生します。
意味
JMSの動作環境の設定に誤りがあります。
ユーザの対処
必要な製品が正しくインストールされ、環境変数CLASSPATHが正しく設定されていることを確認してください。環境変数については、“J2EE ユーザーズガイド(旧版互換)”の“JMSアプリケーション運用マシンの運用前の環境設定”を参照してください。
ユーザの対処
Interstageがインストールされているサーバマシン上でクライアントアプリケーションを動作させている場合、Interstage Application Server、またはJava実行環境(Linuxの場合)でインストールしたjavaコマンドを使用しているか確認してください。
また、クライアントの環境が正しく設定されているか確認してください。クライアントの環境設定についての詳細は、“J2EE ユーザーズガイド(旧版互換)”の“JNDI”-“EJBを参照する場合の環境設定”を参照してください。
ユーザの対処
EJBサービスのクライアントがインストールされ、正しく設定されていることを確認してください。
意味
CORBAサービス、またはCORBAサービスクライアントがインストールされていない、または正しく設定されていません。
ユーザの対処
CORBAサービス、またはCORBAサービスクライアントがインストールされ、正しく設定されていることを確認してください。