こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

JAVAコンパイルと実行

はじめまして。質問があります。

eclipseで開発したjavaのソースを実行するとき、メニューからメインクラスを指定し実行するだけでプログラム実行されますが、そのプログラムをコマンドプロンプトで実行する場合、できるプログラムとできないプログラム(例外:NoClassDefFoundError)があります。

コンパイルはeclipceのほうで勝手に.classファイルが生成されるので、そのclassファイルをjava [ファイル名]と打つだけだと思います。

実行できるプログラムとできないプログラムの違いは以下の通りです。

・実行できるプログラム
eclipseで新規でプロジェクトを作成。その直下にソースが存在し、クラスファイルも同じディレクトリに生成されます。

・実行できないプログラム
eclipseで新規でプロジェクトを作成。ソースフォルダ(src)を作成し、その下からパッケージ、クラスを作成しました。そうすると、エクスプローラでそのプロジェクトを見ると、binフォルダが生成されていました。その中にクラスファイルが生成されます。

違いはこのような感じです。実行できないプログラムをコマンドプロンプトで実行させるためにはどうしたらよいでしょうか?eclipseの使い方はだいぶわかってきたのですが、どのように動作しているか(java自体も)がわかりません。ご教授宜しくお願い致します。

OS:windows2000
開発環境:eclipse 3.0(J2SE 1.4.2_03)

投稿日時 - 2005-01-11 19:25:29

QNo.1163090

困ってます

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

eclipse使いではないので詳細は分かりませんが,eclipseのヘルプからeclipseコミュニティなどのサイトにアクセスしてみてはいかがですか?

もしくは”eclipse”でネット検索してみるとご希望のサイトが見つかるかもしれません。

投稿日時 - 2005-01-16 12:33:54

お礼

ありがとうございます。いろいろネットで調べてみようと思います。
タイトルとは少々違った質問ばかりしてしまい申し訳ございません。とても感謝しております。また機会がありましたら宜しくお願いします。

投稿日時 - 2005-01-17 11:14:55

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

私もまだまだ勉強中の身なので納得のいく回答であるかはわかりませんが、

出力ディレクトリに違いがあるのは、java.util.loggin.FileHandlerクラスが出力するファイル名にパターンの指定がなければシステムプロパティに依存する処理になっているからです。
つまり、eclipseの場合はプロジェクトフォルダーをベースにパスを通す仕組みに対してコマンドプロンプトで実行した場合はbinフォルダ(classファイルのあるフォルダ)をベースにパスを通す仕組みが原因ではないでしょうか。

つたない説明で申し訳ないので,試しにFileHandlerのインスタンスを生成するのをしたの2パターンでeclipseとコマンドプロンプトで実行してみてください。

例)プロジェクトフォルダの直下に"log"フォルダを作成します。

1.FileHandler fh = new FileHandler("./log/helloworldlog.txt");
 →この場合eclipseではちゃんと実行できますが,コマンドプロンプトからだとIOExceptionが発生します。
 
2.FileHandler fh = new FileHandler("../log/helloworldlog.txt");
 →逆にこの場合コマンドプロンプトではちゃんと実行できますが,eclipseからだとIOExceptionが発生します。

投稿日時 - 2005-01-13 18:40:27

補足

システムプロパティというのは変更可能なのでしょうか?もし可能であればどうやったら変更できるのでしょうか?
ここら辺になってくると、自分でもどう調査してよいのかわかりません…もし参考になるようなURLがありましたらご教授ください。
質問ばかりで申し訳ございません。

投稿日時 - 2005-01-14 16:05:31

お礼

実行してみました。おっしゃるとおりの結果が得られました。ありがとうございます。

投稿日時 - 2005-01-14 16:05:16

ANo.1

コマンドプロンプトのディレクトリ(C:\Documents and Settings…>)を作成されたプロジェクトのbinフォルダに移動して

java クラス名

と打ち込めば実行できると思います。
ディレクトリの移動は下記のURLを参考にして下さい。

参考URL:http://www.hellohiro.com/appli.htm

投稿日時 - 2005-01-12 01:58:54

補足

迅速な対応ありがとうございます。ディレクトリの変更ミスでした。

すいませんがもう一つ質問よろしいでしょうか?
今、ログを出力するプログラムを作成しています。参考URL→http://www.hellohiro.com/logging.htmのようなプログラムを作成しています。同様にソースフォルダにjavaファイル、binフォルダにclassファイルが作成されます。そこで、FileHandlerを生成するときにログ出力名を指定しますが、パスを指定しないファイル名だけの場合、出力されるディレクトリがeclipceで実行するときと、コマンドプロンプトで実行するときと違うのはなぜでしょうか?
eclipceで実行した場合は、作成したプロジェクトのフォルダの直下に作成されるのですが、コマンドプロンプトで実行した場合はbinフォルダの直下に作成されてしまいます。

タイトルと少々違った内容の質問になってしまいましたが、宜しくお願いします。

投稿日時 - 2005-01-12 10:30:51

あなたにオススメの質問