• ベストアンサー

教科書に載っている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個も出ます。 教科書に載っている通りで何も変更していません。 何が悪いのか、さっぱりです。 これが出来ないと何も先に進まないんです。 本当にこのプログラム、実行できるんですか??? (この教科書、誤字脱字ひどいし、プログラムもおかしい可能性もあるかも、なんて思ってます。) すみません、ド素人の私に分かるように一つ一つ実行の仕方を教えて下さい。 お願いします。

  • ginkgo
  • お礼率94% (132/139)
  • Java
  • 回答数4
  • ありがとう数4

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

  • ベストアンサー
  • 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

  • JAVAのソートプログラムについて

    List1.txtの内容の単語の数を数え、その数を単語の隣に表示するプログラムを作りました。 (1)List1.txtの内容 ゲーム ゲーム 麻雀 麻雀 野球 ゲーム (2)実行結果 C:\>java Lists ゲーム 3 野球 1 麻雀 2 (3)プログラム import java.io.BufferedWriter; import java.nio.charset.Charset; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; import java.util.TreeMap; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.List; import java.util.*; public class Lists { public static void main(String[] args) throws IOException{ File file3 = new File("C:\\List1.txt"); BufferedReader br3 = new BufferedReader(new FileReader(file3)); FileWriter filewriter3 = new FileWriter(file3,true); TreeMap<String,Integer> tm = new TreeMap<String,Integer>(); String line; while((line = br3.readLine()) != null){ String[] words = line.split("\\s"); for(String s : words){ if(!tm.containsKey(s)){ tm.put(s,1); }else{ tm.put(s,tm.get(s).intValue()+1); }} } for(String s : tm.keySet()){ System.out.println(s + " " + tm.get(s) ); }}} このプログラムを上から単語の数が多い順に表示したいのですがどこをどう修正したらいいのか悩んでます。 C:\>java Lists ゲーム 3 麻雀 2 野球 1 と表示されればOKです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Javaのソートプログラムについて

    List1.txtの内容の単語の数を数え、その数を単語の隣に表示するプログラムを作りました。 (1)List1.txtの内容 ゲーム ゲーム 麻雀 麻雀 野球 ゲーム (2)実行結果 C:\>java Lists ゲーム 3 野球 1 麻雀 2 (3)プログラム import java.io.BufferedWriter; import java.nio.charset.Charset; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; import java.util.TreeMap; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.List; import java.util.*; public class Lists { public static void main(String[] args) throws IOException{ File file3 = new File("C:\\List1.txt"); BufferedReader br3 = new BufferedReader(new FileReader(file3)); FileWriter filewriter3 = new FileWriter(file3,true); TreeMap<String,Integer> tm = new TreeMap<String,Integer>(); String line; while((line = br3.readLine()) != null){ String[] words = line.split("\\s"); for(String s : words){ if(!tm.containsKey(s)){ tm.put(s,1); }else{ tm.put(s,tm.get(s).intValue()+1); }} } for(String s : tm.keySet()){ System.out.println(s + " " + tm.get(s) ); }}} このプログラムを上から単語の数が多い順に表示したいのですがどこをどう修正したらいいのか悩んでます。 C:\>java Lists ゲーム 3 麻雀 2 野球 1 と表示されればOKです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • java 外部プログラムの実行

    いつもお世話になっています。 タイトルのとおり外部プログラムの実行方法についてです。 現在プログラムAを実行するとプログラムBが実行されるプログラムを作成できないかと考えています。 少し調べてみたところ外部プロセスの実行がそれにあたるかと思うのですが、ネット上にあるサンプルプログラムを実行してみてもコンパイルこそできるものの実行がエラーになってしまいます。 以下のサイトを参考にしていますが、サンプルにある通りのメモ帳の実行は出来ますが,javaプログラムの実行はできない状態です。 http://syunpon.com/programing/java/sample/execute.shtml 私の考えているようなことはjavaで実装可能なのでしょうか? ご存知の方おられましたらご教授お願いします。

    • ベストアンサー
    • Java
  • javaプログラムの実行ファイル作成について

    下記のコードをPleiades44から実行可能ファイルを作成し(例えば、c:\bbb.jar) コンソールから実行しましたが、コンソールには何も表示がなく終了します。 注)GUIの他のコードはPCのコンソールから実行できました。 そのソースの内容は、キーボードから入力し、その入力をコンソールに表示するものです。 尚、このプログラムはPleiades44では、Debugや実行が出来、Eclipseのコンソールに ("input integer: ")と表示出来、次に数値を入力しますと、その内容が表示出来ます。 また、binホルダーに行き、java Sample1.Sample4でも旨く実行できました。 Q1)このプログラムの実行ファイルを作成して、をPCのコンソールから実行はできないものでしょうか? 尚、実行ファイルの作成方法は、ファイルを選択して、右クリックで、実行可能ファイルを 選択するものでした。 //======================== package Sample1; //Sample4.java import java.io.BufferedReader; import java.io.InputStreamReader; public class Sample4{ public static void main(String args[]){ int x=9; while(x!=0){ System.out.print("input integer: "); InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); try{ String buf = br.readLine(); x = Integer.parseInt(buf); }catch(Exception e){ x = 0; } System.out.println("Input Number = " + x); } //while System.out.println("end"); } } //=============================== 以上、宜しくお願いします。

    • ベストアンサー
    • Java
  • javaプログラムのimportについて

    Javaプログラムでサンプルプログラムを実行したいのですが、 com.sun.xml.parser.Resolver;とcom.sun.xml.tree.XmlDocument; をimportするところでエラーがでてしまいます。 javaのビルド・パスで、JARファイルを追加しようと考えております が、上記の2つを含むJARファイルが置いてあるサイト(URL)が 分かりません。どうか教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java
  • java.security.KeyStoreについて

    keyStoreファイルをメンテナンスするためのプログラムを引き継いだのですが、このプログラムがビルドできなくて困っています。 (前任者からビルドして使ってね、としか言い残されていないので・・・) プログラムの冒頭部分に以下のような記載があり、矢印をつけた部分でエラーが出てしまいます。 import java.io.FileInputStream; import java.io.FileOutputStream; import java.security.Key; import java.security.KeyStore;  ←ここでビルドエラー import java.security.cert.Certificate; import java.util.Enumeration; エラーメッセージには「型java.security.KeyStoreが見つかりません」と出ていますが、どうすれば解消できるのか検討もつかず、困っています。 同時に渡されたbcprov-jdk14-129.jarになにかありそうなのですが、中には膨大な.classファイルが収められているだけでした。 (bcprov-jdk14-129で検索しても、何も得られなかったので、本当に困っています。) どなたか、お知恵を貸してください。

    • ベストアンサー
    • Java
  • 教科書に載っていた、Javaのプログラムなのですがなぜかコンパイルでき

    教科書に載っていた、Javaのプログラムなのですがなぜかコンパイルできません。 import java.until.Scanner; class ScanInteger{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.print("整数値:"); int x = scan.nextInt(); System.out.println(x + "と入力しましたね。"); } } エラーの内容としては、ScannerクラスのSに何か原因があると言うようなものが出ます。 よろしくお願いします。

  • Javaで作ったプログラムの実行方法

    Javaを勉強しているものです。 Javaで作ったプログラムを実行させる場合(テストなどではなくて)、Jarファイルにしてコマンドプロンプトから実行させるのが調べた中ではどうも一般的なようなのですが・・・。若しくはバッチファイルを作成して、そのアイコンをダブルクリックして実行など。 普通のソフトのように、アイコンをダブルクリックして実行できるような形にする方法はあるのでしょうか? ちなみに、作ったプログラムはCSV形式のデータを読み取る部分があり、実行時にそのファイルのありかを引数として与える必要があります。 ソフトを使えばEXEファイルに出来るようなのですが、そういったものを使用せずに出来る方法をご存知の方がいらっしゃいましたら、教えてください。

    • ベストアンサー
    • Java
  • Javaプログラムの実行時エラー

     Javaの学習をしている初心者です 今までメモ帳でコーディングしてコマンドプロンプトでコンパイル・実行していましたが、本日も同様のことをしていたところ、実行を要求するとException in thread "main" java.lang.NoClassDefFoundError: なるエラーが出ました。 このエラーはコーディング時のクラス名とファイル登録時のクラス名が異なる場合に出ていたような気がします。 今回は今まで作成したプログラム全部で、実行するとこのエラーが出ます。新しく作成したものもだめです。…コンパイルは うまくいきますが、実行するとこのエラーが出ます。  どうしたらよいかどなたかお教えください。

  • Javaの実行できません、教えてください。

    Javaの実行できません、教えてください。 http://members2.jcom.home.ne.jp/take_1118/Applet39.html このページのサンプルプログラムを実行したいですが、どうしても Exception in thread "main" java.lang.NoSuchMethodError:main というエラーが出るため、実行できません。 どうすればできるんでしょうか?教えてください、お願いします。 サンプルプログラムではmainメソッドが含まれていないようですが、そうすれば実行できるんでしょうか?

専門家に質問してみよう