ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server メッセージ集

42.3.8 java.lang.NoClassDefFoundError

本項で説明している例外一覧

例外の説明

java.lang.NoClassDefFoundError

[意味]
  NoClassDefFoundErrorは、通常のメソッド呼出し、あるいはnew式を使った新しいインスタンスの生成でJava VMまたはクラスローダがクラス定義をロードしようとしたとき、クラス定義が見つからない場合にスローされるものです。
  現在実行中のクラスをコンパイルする時点では存在していましたが、その後見つからなくなっている場合などがあります。

  1. ワークユニット環境設定のクラスパスに設定した環境変数に誤りがあります。

  2. アプリケーション・コンパイル時のJDKの環境と、アプリケーション実行時のJDKの環境が異なります。

  3. クラスまたはメソッド名の指定で大文字・小文字が異なります。

  4. 別のIJServerに配備されたEJBアプリケーションをlookupする場合に、クライアント配布物にクラスパスが設定されていません。

  5. クラスパス上のクラスから、Webアプリケーション内部のクラスを参照しようしています。

  6. 同一パッケージであるが別クラスローダ上のクラスを呼び出そうとしています。

  7. 使用しているJavaのバージョンと、クライアント配布物をコンパイルしたJavaのバージョンが異なります。

[ユーザの対処]

  1. ワークユニット環境設定のクラスパス定義について見直してください。
    IJServer動作時に設定されるクラスパスは、コンテナ情報ログ(info.log)に出力されます。コンテナ情報ログでクラスパスの設定を確認してください。

  2. アプリケーションをコンパイルしたJDKのバージョンとアプリケーションが動作するJDKのバージョンを同じにしてください。または、アプリケーションが動作するJDKの環境に合わせてアプリケーションを再コンパイルしてください。

  3. アプリケーションの呼出し部分を正しいクラス/メソッド名に修正してください。

  4. クライアント配布物にクラスパスを設定してください。

  5. 以下のいずれかの対処を行ってください。

    • クラスパス上のクラスからロードされるWebアプリケーション内のクラスを、クラスパス上に指定します。

    • Webアプリケーション内のクラスをロードするクラスが当該Webアプリケーションからしか使用されない場合、そのクラスをWebアプリケーションに含めてクラスパス指定から外します。

    • コンテキストクラスローダを使用してWebアプリケーション内のクラスをロードします。クラスローダの詳細については、JDKのマニュアルを参照してください。

  6. ワークユニット環境設定のアプリケーション固有ライブラリパス定義を使用することにより回避できる場合があります。

  7. EJBアプリケーションを配備したIJServerのJavaのバージョンと、EJBアプリケーションを呼び出すJavaのバージョンは一致させてください。本バージョン・レベルのIJServerと、互換のIJServerが混在している場合は統一してください。JDK5.0でコンパイルしたクラスはJDK/JRE1.4では読み込めません。Javaのバージョンを統一することができない場合は、旧バージョン・レベル(互換)のIJServerに配備したクライアント配布物を使用し、EJBアプリケーションを呼び出すJavaのバージョンと、クライアント配布物を生成したJavaのバージョンを一致させてください。

  また、IJServerの「クラスローダの分離」の設定によっては、モジュール間で参照ができない場合があります。“J2EE ユーザーズガイド”の“J2EEアプリケーションの設計”の“クラスローダの分離”参照し、アプリケーションの構成あるいはクラスローダの分離に誤りがないか確認してください。

java.lang.NoClassDefFoundError: “%s”
または

java.lang.NoClassDefFoundError: NullPointerException

[可変情報]
  %s = アプリケーションが利用しているクラス名

[意味]
  アプリケーションの動作環境の設定に誤りがあります。

[ユーザの対処]

  J2EEアプリケーションクライアントの場合は、以下も確認してください。

java.lang.NoClassDefFoundError: “クライアントが利用しているクラス名”または
NullPointerException
(1)

[ユーザの対処]
  以下についてそれぞれ確認してください。

  また、EJBアプリケーションでJavaアプレットの異常が発生し、Javaコンソールに上記の例外が出力した場合は、以下について確認してください。

  注1)
  当現象は以下の場合に発生することがあります。

java.lang.NoClassDefFoundError: com/fujitsu/interstage/jms

[意味]
  JMSの動作環境の設定に誤りがあります。

[ユーザの対処]
  必要な製品が正しくインストールされ、環境変数CLASSPATHが正しく設定されていることを確認してください。環境変数については、“J2EE ユーザーズガイド”の“JMSアプリケーション運用マシンの運用前の環境設定”を参照してください。

java.lang.NoClassDefFoundError: javax/ejb/EJBObjectまたは
java.lang.NoClassDefFoundError: javax/naming/NamingException

[ユーザの対処]
  Interstageがインストールされているサーバマシン上でクライアントアプリケーションを動作させている場合、Interstage Application Server、またはJava実行環境(Linuxの場合)でインストールしたjavaコマンドを使用しているか確認してください。
  また、クライアントの環境が正しく設定されているか確認してください。クライアントの環境設定についての詳細は、“J2EE ユーザーズガイド”の“JNDI”-“各種オブジェクトを参照する場合の環境設定”-“EJBを参照する場合の環境設定”を参照してください。

java.lang.NoClassDefFoundError: javax/naming/InitialContext

[ユーザの対処]
  EJBサービスのクライアントがインストールされ、正しく設定されていることを確認してください。

java.lang.NoClassDefFoundError: org/omg/CORBA/ORB

[意味]
  CORBAサービス、またはCORBAサービスクライアントがインストールされていない、または正しく設定されていません。

[ユーザの対処]
  CORBAサービス、またはCORBAサービスクライアントがインストールされ、正しく設定されていることを確認してください。