• ベストアンサー

教科書に載っているJavaプログラムが実行できない!?

http://www.mathcs.duq.edu/drozdek/DSinJava/ DbObject.java Personal.java Student.java Database.java UseDatabase.java にある上の5つのファイルをDLして 上の順番の通りに並べて一つのファイルに結合しました。 教科書にはそう載っているからです。 でもimport java.io.*;のラインで 最初のimport java.io.*;以外はエラーが出てしまいます(4つ出ます)。 //でコメントアウトすれば消えるのですが、それで実行できるかというと出来ません。 「"Database.java": シンボルを解決できません。」というエラーが11個も出ます。 教科書に載っている通りで何も変更していません。 何が悪いのか、さっぱりです。 これが出来ないと何も先に進まないんです。 本当にこのプログラム、実行できるんですか??? (この教科書、誤字脱字ひどいし、プログラムもおかしい可能性もあるかも、なんて思ってます。) すみません、ド素人の私に分かるように一つ一つ実行の仕方を教えて下さい。 お願いします。

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

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.4

実際に六つのファイルをダウンロードしてコンパイラ(javac)を起動させたところ、私のパソコンでは正しくコンパイルできました。 ということで、質問者さんのコンパイラの設定などに問題があるようです。 必要なソースファイルはそろっているか、ファイル名は間違っていないか、もう一度確認してください。 また、ソースファイルがあるフォルダの情報がコンパイラに正しく伝わっているかも確認する必要があります。クラスパスにカレントフォルダを追加したのであれば、カレントフォルダがソースファイルのフォルダと一致しているか確認してください。 ところで、ダウンロードしたソースファイルを改変していませんか? 自分でソースを手直ししたというのであれば、ソースをダウンロードしなおすか、または手直しする前の状態に戻してみてください。

ginkgo
質問者

お礼

ご回答、ありがとうございます!! 私もjavacで起動させたところ、正常に動作しました。 前回javacでコンパイルしようとしたときはパスがうまくきれてなかったので出来なかったのですが、今回改めてやってみると出来ました。 もうJBuilderを使うのは辞めます。 便利どころか、使い物になりません(私のは)。 さっき、教授に怒りのメールを書きました。 明日会うのが楽しみです(!?)。 これから一週間でこのRandomAccessFileを利用してファイルの読み書きをするプログラムを完成させないとけません。でも、コンパイルが出来る今、エラーアンドトライでなんとか出来るでしょう(問題はC++とJavaの違いのみ…かな、本当に)。 皆さんに迷惑をかけないように勉強しないといけませんね。 そのうち、誰かを助けられるようになりたいです。 6つのファイルをわざわざダウンロードして確かめてくださってありがとうございました!

ginkgo
質問者

補足

蛇足ですが、教授の「きっとお前のJBuilderが悪い」はあながち嘘ではないですね、今思えば。 とは言っても5つのファイルが1つになっている、と説明したのにそれにも気付かず、IOmethods.javaについても何も言いませんでした。…というよりもこの教授自体もコンパイルできていないと思います。 評価シートにはそれなりの評価をつけさせていただきます(怒)。 本当に蛇足でした。m(__)m

その他の回答 (3)

noname#5910
noname#5910
回答No.3

Javaは必要なソースファイルだけ勝手にコンパイルして利用しますから、 ケチケチせずに全部ダウンロードして同じディレクトリに入れてみてはいかがですか? それから、シンボルが解決できませんというのは、要するにその識別子(名前)が 与えられたコードの中で定義されていないということ(が多い)です。

ginkgo
質問者

お礼

ご回答、ありがとうございます。 URLのすべてのファイルをDLして同じディレクトリに入れましたが、結果はまったく変わりませんでした。 IOmethodsもDbObjectもしっかり存在しているので、それらが読めない何か他の原因だと思うのですが、どうでしょうか? ちなみにCLASSPATHにカレント"."を追加しましたが結果は変わりませんでした。 どなたか助けて下さい。お願いします。m(__)m

  • takaP-
  • ベストアンサー率79% (83/105)
回答No.2

1つはっきりしていることは、5つの上記に提示された ファイルだけでは足りないという事です。 エラーにも表示されてますが、IOmethods.java です。 本当に教科書に必要なファイルが上記5つと記されて いるのならば、本の誤りでしょうね。 取り敢えず、IOmethods.java を5つのファイルと 同じディレクトリに保存し(当然5つが本当に在るのか も要確認の事)main() のある UseDatabase.java を コンパイルして下さい(そうすれば、必要なファイルは 芋づる式にコンパイルされます) それと気になったのが、未だ初歩の段階で IDE 等を 使うのは如何なものかと思います。 授業で指定されているのかもしれませんが感心はでき ませんね。 それに、IDE がおかしいで済ます教員にも疑問符です。 基礎が固まるまでの間は、IDE 等は横においておいて SDK & エディターで作業を進めた方が後々の為になる と思いますし、要らぬ混乱も減ると思います。

ginkgo
質問者

お礼

ご回答、ありがとうございます。 IOmethods.javaは標準のpackageの中にでも入っているのかと思っていました…。 はい、IOmethods.javaを追加するとエラーが27個→11個に減りました。 あ、1番目と7番目のエラーは依然としてIOmethods関連でまったく同じ場所 private IOmethods io = new IOmethods(); で起こってます。 その他のエラーは全部DbObject関連で private void add(DbObject d) throws IOException { というようにDbObjectを呼ぶところで起こっています。 シンボルを解決できません、というのはimportがうまくいってないんでしょうか? 「java.io.命令」とかやれば直るんですか? http://www.gimlay.org/~javafaq/S172.html#S172-13 それとも別の「****.**.命令」ですか? 「java.io.命令」では直りません…。 状況としては6つのファイルを別々に読み込んでいて 実行したコマンドは「Make Project」のみです。 JBuilderは授業で指定されてますが、なにも教えてもらってないです(Javaも、です)。独学でやるしかありません。 今、http://www.atmarkit.co.jp/fjava/index.htmlを参照しながらSDKとエディターでの方法を始めたばかりです。 引き続き、エラーに関する情報をお待ちしています。m(__)m

ginkgo
質問者

補足

新たなエラーの内容全文 "Database.java": シンボルを解決できません。シンボル: クラス IOmethods 場所 : Database の クラス at line 6, column 13 "Database.java": シンボルを解決できません。シンボル: クラス DbObject 場所 : Database の クラス at line 11, column 22 "Database.java": シンボルを解決できません。シンボル: クラス DbObject 場所 : Database の クラス at line 17, column 25 "Database.java": シンボルを解決できません。シンボル: クラス DbObject 場所 : Database の クラス at line 34, column 26 "Database.java": シンボルを解決できません。シンボル: クラス DbObject 場所 : Database の クラス at line 48, column 26 "Database.java": シンボルを解決できません。シンボル: クラス DbObject 場所 : Database の クラス at line 57, column 21 "Database.java": シンボルを解決できません。シンボル: クラス IOmethods 場所 : Database の クラス at line 6, column 32 "Database.java": シンボルを解決できません。シンボル: クラス DbObject 場所 : Database の クラス at line 18, column 9 "Database.java": シンボルを解決できません。シンボル: クラス DbObject 場所 : Database の クラス at line 18, column 30 "Database.java": シンボルを解決できません。シンボル: クラス DbObject 場所 : Database の クラス at line 35, column 9 "Database.java": シンボルを解決できません。シンボル: クラス DbObject 場所 : Database の クラス at line 35, column 30

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.1

> 上の順番の通りに並べて一つのファイルに結合しました。 五つのファイルの中身をまとめて一つのファイルに保存してコンパイルしようとしたということですか? だとすれば、そこからすでに間違っています。Javaのソースファイルの構造にはそれなりに意味がありますので、勝手に一つのファイルにまとめたりすることはできません。五つのファイルはあくまでも五つのファイルです。 > 最初のimport java.io.*;以外はエラーが出てしまいます これも、ファイルを勝手に一つにしたせいです。 > 教科書にはそう載っているからです。 教科書に「ファイルを結合してコンパイルせよ」と書いてあるのですか? だとすれば、教科書に致命的なミスがあるか、あなたが教科書に書いてある意味を取り違えているかのどちらかです。 とりあえず、まず最初にすべきことは、五つのファイルを(一つに結合せずに)コンパイルすることです。(コンパイルのしかたは分かりますよね……?) うまくいかないときは、「入力したコマンド」と「エラーの内容全文」と「教科書の該当部分」を補足欄に書いてください。(そのときはできるだけ「コピー&貼り付け」で補足欄に書き込むようにしてください)

ginkgo
質問者

お礼

ご回答、ありがとうございます。 そうでした、ファイル名とクラス名は一致させないといけないんでした。 そうなると5つに分けないといけませんでしたね…。 この教科書にはこれらのファイルがコメント文一行を挿んだだけでズラーッと載っているんですよ。せめて分けて載せてほしいです…。 実は先日、あまりに動かないんで教授のところにパソコン持ってこのプログラムを見せに行きましたが、そのことは指摘せずに「きっとお前のJBuilderが悪い」と言われ、次のミーティングにさっさと行ってしまいました。 さて、5つに分けてコンパイルしたのですが、エラーが大量(計27個)に発生します。 入力したコマンドは「Make Project (Ctrl + F9)」だけです。 ご覧の通り、全部「シンボルを解決できません」です。 これは私のパソコンのCLASSPATHの問題でしょうか? 現在のCLASSPATHは C:\j2sdk1.4.2\lib\*.jar;C:\JBuilder9\lib\*.jar となっています。 それとも他の原因でしょうか? 補足要求があればまた補足します。

ginkgo
質問者

補足

エラーの内容全文 "Database.java": シンボルを解決できません。シンボル: クラス IOmethods 場所 : Database の クラス at line 6, column 13 "Database.java": シンボルを解決できません。シンボル: クラス DbObject 場所 : Database の クラス at line 11, column 22 "Database.java": シンボルを解決できません。シンボル: クラス DbObject 場所 : Database の クラス at line 17, column 25 "Database.java": シンボルを解決できません。シンボル: クラス DbObject 場所 : Database の クラス at line 34, column 26 "Database.java": シンボルを解決できません。シンボル: クラス DbObject 場所 : Database の クラス at line 48, column 26 "Database.java": シンボルを解決できません。シンボル: クラス DbObject 場所 : Database の クラス at line 57, column 21 "Database.java": シンボルを解決できません。シンボル: クラス IOmethods 場所 : Database の クラス at line 6, column 32 "Database.java": シンボルを解決できません。シンボル: クラス DbObject 場所 : Database の クラス at line 18, column 9 "Database.java": シンボルを解決できません。シンボル: クラス DbObject 場所 : Database の クラス at line 18, column 30 "Database.java": シンボルを解決できません。シンボル: クラス DbObject 場所 : Database の クラス at line 35, column 9 "Database.java": シンボルを解決できません。シンボル: クラス DbObject 場所 : Database の クラス at line 35, column 30 "Personal.java": シンボルを解決できません。シンボル: クラス IOmethods 場所 : Personal の クラス at line 3, column 31 "Personal.java": シンボルを解決できません。シンボル: メソッド writeString (java.lang.String,java.io.RandomAccessFile)場所 : Personal の クラス at line 21, column 9 "Personal.java": シンボルを解決できません。シンボル: メソッド writeString (java.lang.String,java.io.RandomAccessFile)場所 : Personal の クラス at line 22, column 9 "Personal.java": シンボルを解決できません。シンボル: メソッド writeString (java.lang.String,java.io.RandomAccessFile)場所 : Personal の クラス at line 23, column 9 "Personal.java": シンボルを解決できません。シンボル: メソッド readString (int,java.io.RandomAccessFile)場所 : Personal の クラス at line 33, column 15 "Personal.java": シンボルを解決できません。シンボル: メソッド readString (int,java.io.RandomAccessFile)場所 : Personal の クラス at line 34, column 16 "Personal.java": シンボルを解決できません。シンボル: メソッド readString (int,java.io.RandomAccessFile)場所 : Personal の クラス at line 35, column 16 "Personal.java": シンボルを解決できません。シンボル: メソッド readLine ()場所 : Personal の クラス at line 41, column 15 "Personal.java": シンボルを解決できません。シンボル: メソッド readLine ()場所 : Personal の クラス at line 45, column 15 "Personal.java": シンボルを解決できません。シンボル: メソッド readLine ()場所 : Personal の クラス at line 47, column 16 "Personal.java": シンボルを解決できません。シンボル: メソッド readLine ()場所 : Personal の クラス at line 51, column 16 "Personal.java": シンボルを解決できません。シンボル: メソッド readLine ()場所 : Personal の クラス at line 55, column 32 "Personal.java": シンボルを解決できません。シンボル: メソッド readLine ()場所 : Personal の クラス at line 57, column 31 "Student.java": シンボルを解決できません。シンボル: メソッド writeString (java.lang.String,java.io.RandomAccessFile)場所 : Student の クラス at line 18, column 9 "Student.java": シンボルを解決できません。シンボル: メソッド readString (int,java.io.RandomAccessFile)場所 : Student の クラス at line 22, column 17 "Student.java": シンボルを解決できません。シンボル: メソッド readLine ()場所 : Student の クラス at line 27, column 17

関連するQ&A