カスタム検索

2009年11月7日土曜日

NoClassDefFoundErrorへの挑戦!

さて、今回は久しぶりにjavaの基本をお勉強してみましたが、
「NoClassDefFoundError」が。。。

いろいろ基礎から再勉強しなおしていたら。。。

「javaの実行に伴う、NoClassDefFoundErrorの理由」

私の解釈は次の通りで、いろいろテストをして確認してみました。

☆対応策(javac、javaにて、上記エラーが出る場合の対策)

  javac、javaをコマンドプロンプト上等にて実行する時に、pathにjdkがインス
 トールされているfolderが指し示されているかを確認する。  例えば、コマンド
 プロンプト上にて、次のコマンドを投入。
 「path」

  この際に、環境変数pathに、jdkがインストールされているfolderが指定
 されていなければ、システムのプロパティから環境変数(ユーザ、システムどちら
 でも結構)Pathを編集する。  その設定方法は、次のサイトに記載されて
 います。
☆まとめ
  要は、javac、javaという実行ファイルがどこにあるのかを、OS(例えば、
 windows)に教えてあげるということ。 なので、classpathである必要はない様
 です。

☆補足
 にて議論されていた当初の問題とは。
  pathにバージョンが異なる2つの実行ファイル「java」が、指し示されていた
 (例えば、D:\oracle\ora92\jre\1.4.2\binと、
 C:\Program Files\Java\jdk1.5.0_05\bin)。
 実行ファイル「javac」では、Javaのversionが、1.5のもの
 (C:\Program Files\Java\jdk1.5.0_05\binの直下のjavac)でコンパイル
 された。
  一方、そのコンパイル結果であるclassファイルは、Javaのversionが、1.4の
 もの(環境変数「Path」に、前の方に定義されている
 D:\oracle\ora92\jre\1.4.2\bin)で実行された。

  他にも、QuickTimeのついての記載もありますが、これはjavaコマンドで
 実行する際に、実行対象のclassファイルにて、別のクラスファイルやライブラリ
 を呼び出す様に作られたjavaファイルの時に、注意する必要があるという問題
 です。  次のサイトに、非常にわかりやすいpathとclasspathの違いが記載
 されておりますので参考にされると良いかと思います。