Ant使いがJDBの起動でつまづいた備忘録

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ディレクトリにいるときの例

デバッガーはたまに必要になる。使えたら実行時エラーのバグ取りに役立つ。

自転車のホイールをJIS組からイタリアン組に組み替えてみた

JIS組のホイールとイタリアン組のホイールはどう違うのか。

この2つは、似た組み方をして、一見しただけでは区別がつかないほど似ているが、スポークが交差する場所の上側と下側のスポークの関係が違う。

JISは真ん中から見ると、左右対称に上下関係があるが、イタリアンは真ん中から、平行な感じで、対称ではない。

この両者の組み方の違いを対称関係(JIS)と平行関係(イタリアン)と呼ぶとすると、対称関係の組み方は、どちらに回転しても、スポークの踏ん張りが効くとされ、平行関係の方は、指向性があり、進行方向に対しては、踏ん張りが効き、そうでない方向へは踏ん張りが効かない。

なので、JIS組はディスクブレーキが付いていたり、両切りのピストバイク用のハブで、ホイールの入れ替えをするバイク、つまり両方向に負荷がかかるバイクには適している。

対してイタリアン組はキャリパーブレーキのバイクにはJISより良いとされている。

僕は、古いルック車に手を入れて乗っていて、その前輪を組み替えてみた。古いけど、組み替えるとあじがあるオーラを放っている。以前、センター出しに挑戦したときは、かなりテンション差を与えても、センターが全然動かなかった。

一度、進行方向左側を組んでから、進行方向右側のスポークを組んでいたら、スポークが届かなくなった。全然ハブの位置が動かなくて、一度進行方向右側のスポークを外して、組み直した。スポークをハブのフランジの内側に入れるか、外側に入れるかのところで、一本入れ間違えていたのが原因だった。

その次は、ハブが固まるのを防ぐために、スポークを一本組むたびに、奥や手前にハブをずらして、スポークがピンと張って、ニップルがホイールの穴からできるだけ顔を出すようにした。そしたらうまく組めた。

6本組