Javaの環境作りだけでやたらと時間がかかった・・・。さて、元の道に戻ろう。Javaにつきものであるオブジェクト指向を学ぶのだった。
その学び方としては、オブジェクト指向の学ぶ本を使う。
なぜ、あなたはJavaでオブジェクト指向開発ができないのか。
まずは、オブジェクト指向の考え方を使わずに、プログラムを作成して、オブジェクト指向がどういう場面で必要に駆られるのかというところを説明している良書である。
オブジェクト指向を使わずに、じゃんけんプログラムを作れと書かれている。
じゃんけんといっても、下記ルールで作成する。
・プレイヤーは二人で、ジャンケンの様子を再現する
・ジャンケンは3回勝負
・3回勝負で勝った回数の多いプレイヤーが勝ち
・引き分けも1回の勝負
・3回勝負後の勝ち数が同じ場合は、引き分けとする
おし。作成だ。といってもJava未経験に近い俺には、創り方がまったくわからんので、
本に載っているやり方を完全に真似て、作成する。
そして、コンパイル。26個エラー。
まねしたつもりが・・
どこどこだ。
うーんほとんどシンボルが見つかりません。だな。
なんだろう・・・これ。
乱数作成で使っていた関数がramdomになってた・・。8個。
とりあえず修正して、再度コンパイル。
8個減って、残り18個。
のあ!
はさみを示す変数、SCISSORが、定義はSCISSORなのに対して、実際に呼び出すところでは、SCISSORSというように複数形にしてました。なんたることだ。
他にもいろいろでたが、同じようなもので、それらを修正して、コンパイル・・・
今度は、特にエラーもなく通った。
OK!
実行結果は、こんな感じ。
C:\tmp>java SimpleJanken
ジャンケン開始
チョキグー
プレイヤー2が勝ちました!
グーパー
プレイヤー2が勝ちました!
チョキグー
プレイヤー2が勝ちました!
ジャンケン終了
0VS3でプレイヤー2の勝ちです!
まあ、地味だけど、ええんや!Javaの勉強中なんや!
C:\tmp>java sample.java
Exception in thread "main" java.lang.NoClassDefFoundError: sample/java
Caused by: java.lang.ClassNotFoundException: sample.java
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
WEBで適当に拾ってきたSampleをコンパイルして、実行すると上記のようなエラーになってしまいます。。。なぜなんでしょう。
NoClassDefFoundError:の対処ということで、検索してみる。
まず。sample.classというクラスが本当に存在しているかチェックをする。
んなもん、あるに決まっているやろうが!!
あれ?
あれれ?
sample.javaをコンパイルしたら、test.classになっていた。
なんとお!!