• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:”main”NoClassDefFoundErrorについて)

main NoClassDefFoundErrorについて

このQ&Aのポイント
  • main NoClassDefFoundErrorについての対処方法について解説します。
  • ソースファイルをコンパイルし、javaコマンドで起動する際に発生するmain NoClassDefFoundErrorのエラーについて詳しく説明します。
  • SDK1.3を使用している場合に起こりやすいmain NoClassDefFoundErrorについて、解決策を紹介します。

質問者が選んだベストアンサー

  • ベストアンサー
  • ct27
  • ベストアンサー率62% (48/77)
回答No.3

私も同じようなコードを書いて実行してみているのですがこちらは上手くいきますね。 //Javaコード import javax.swing.*; import java.awt.event.*; import java.awt.*; public class KeyEventSample{ JFrame frame = new JFrame("KeyEventは誰が取る?"); Canvas canvas = new Canvas(); public KeyEventSample(){ canvas.setSize(200,200); frame.getContentPane().add(canvas,"Center"); frame.pack(); frame.setVisible(true); KeyListener listener1 = new KeyDealer("frame"); frame.addKeyListener(listener1); KeyListener listener2 = new KeyDealer("canvas"); canvas.addKeyListener(listener2); } public static void main(String[] args){ System.out.println( 1 ); try{ new KeyEventSample(); }catch( Exception ee ){ ee.printStackTrace(); ee.toString(); } } class KeyDealer extends KeyAdapter{ String name; public KeyDealer(String name){ this.name = name; } public void keyPressed(KeyEvent ke){ System.out.println(name + " got " + ke.getKeyCode()); } } } //↑↑ここまで↑↑ //DOSプロンプト C:\ct27>javac KeyEventSample.java C:\ct27>java KeyEventSample //↑↑ここまで↑↑ 私はJBuilder3.5を使用しつつなので上手く動いているのかもしれません。 ちょっとお手上げモードかもしれないです。ρ(。。)イジイジ

cyan1110
質問者

お礼

いろいろありがとうございました。試していただいた手順を参考にしていると、私の間違いがわかりました。いろいろ複雑な情報を与えてしまい申し訳ありませんでした。原因はjava実行時に拡張子のclassをつけて実行していました。

その他の回答 (2)

  • ct27
  • ベストアンサー率62% (48/77)
回答No.2

>はい。クラス名とファイル名は同じにしています。 これは大変失礼いたしました。<(_ _)> javaコマンドで実行させるときにちゃんと.classファイルがいるディレクトリで行っていますか? 適当なディレクトリや、間違ったディレクトリでjavaコマンドを実行させるとNoClassDefFoundError と言われるようです。 ちなみにNoClassDefFoundErrorとは 「通常のメソッド呼び出し、あるいは new 式を使った新しいインスタンスの生成で Java Virtual Machine またはクラスローダがクラス定義をロードしようとしたとき、クラス定義が見からない場合にスローされます。」 「検索されるクラス定義は、現在実行中のクラスをコンパイルする時点では存在していましたが、 その後見つからなくなっています。」  といった意味のようです。

cyan1110
質問者

補足

はい。CLASSファイルの存在するディレクトリで行っています。少し、気になっている点としては、関係ないかもしれませんがFRAMEの定義のないプログラムだと動作します。SDK1.2から1.3になったときに、何か定義の仕方が変わったとか、そのようなことは関係ないでしょうか?あくまで推測です。

  • ct27
  • ベストアンサー率62% (48/77)
回答No.1

ファイル名とクラス名が違うとエラーがおきますが、同じにしていますか? 上記でいうとクラス名がKeyEventSampleなのでファイル名もおよびKeyEventSample.class にしなければ動きません。それもでだめなようでしたら補足をいただけると嬉しいです。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=24875
cyan1110
質問者

補足

はい。クラス名とファイル名は同じにしています。

関連するQ&A