Antを使ったプロジェクトで、JDB(java debugger)の起動で、ことごとくCould not find main classエラーを連発したときの問題の原因と、解決策を簡単に記す。
・原因
Main文のあるMain.javaをパッケージMainに入れていたこと。
・解決法
Main文のあるMain.javaをパッケージに入れないこと。
・解説
AntではMain文のあるクラスはMain.javaとして、定義しなければならない。Antの決まりである。Jdbにも決まりがあるようで、Main文のあるクラスをパッケージに入れるとエラーの原因になる。
自分の場合 Midi-Main
-Chord
の用に、Midiパッケージに入れていたら、Mainクラスを見つけられないというエラーがJdbから出た。
Main-Main
Midi-Chord のようなパッケージ構成でもエラーが出た。(MainパッケージにMainクラス、MidiパッケージにChordクラスという構成)
——————–
Midi-Chord
Main(パッケージに入れていない)
のように、Mainクラスをパッケージに入れないとうまく動いた。
コードでいうと、
jdb -classpath ./jvmclasses:./jvmclasses/Midi:../../myJar/mylib.jar Main
これはいまいるディレクトリが(カレントワーキングディレクトリ)プロジェクトの基底で、
project – build.xml
– javasource – Main.java
– Midi – Chord.java
– jvmclasses – Main.class
– Midi – Chord.class
– javadoc
のようなディレクトリ構成のとき、projectディレクトリにいるときの例
デバッガーはたまに必要になる。使えたら実行時エラーのバグ取りに役立つ。