はじめまして。質問があります。
eclipseで開発したjavaのソースを実行するとき、メニューからメインクラスを指定し実行するだけでプログラム実行されますが、そのプログラムをコマンドプロンプトで実行する場合、できるプログラムとできないプログラム(例外:NoClassDefFoundError)があります。
コンパイルはeclipceのほうで勝手に.classファイルが生成されるので、そのclassファイルをjava [ファイル名]と打つだけだと思います。
実行できるプログラムとできないプログラムの違いは以下の通りです。
・実行できるプログラム
eclipseで新規でプロジェクトを作成。その直下にソースが存在し、クラスファイルも同じディレクトリに生成されます。
・実行できないプログラム
eclipseで新規でプロジェクトを作成。ソースフォルダ(src)を作成し、その下からパッケージ、クラスを作成しました。そうすると、エクスプローラでそのプロジェクトを見ると、binフォルダが生成されていました。その中にクラスファイルが生成されます。
違いはこのような感じです。実行できないプログラムをコマンドプロンプトで実行させるためにはどうしたらよいでしょうか?eclipseの使い方はだいぶわかってきたのですが、どのように動作しているか(java自体も)がわかりません。ご教授宜しくお願い致します。
OS:windows2000
開発環境:eclipse 3.0(J2SE 1.4.2_03)
No.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が発生します。
この回答への補足
システムプロパティというのは変更可能なのでしょうか?もし可能であればどうやったら変更できるのでしょうか?
ここら辺になってくると、自分でもどう調査してよいのかわかりません…もし参考になるようなURLがありましたらご教授ください。
質問ばかりで申し訳ございません。
No.1
- 回答日時:
コマンドプロンプトのディレクトリ(C:\Documents and Settings…>)を作成されたプロジェクトのbinフォルダに移動して
java クラス名
と打ち込めば実行できると思います。
ディレクトリの移動は下記のURLを参考にして下さい。
参考URL:http://www.hellohiro.com/appli.htm
この回答への補足
迅速な対応ありがとうございます。ディレクトリの変更ミスでした。
すいませんがもう一つ質問よろしいでしょうか?
今、ログを出力するプログラムを作成しています。参考URL→http://www.hellohiro.com/logging.htmのようなプログラムを作成しています。同様にソースフォルダにjavaファイル、binフォルダにclassファイルが作成されます。そこで、FileHandlerを生成するときにログ出力名を指定しますが、パスを指定しないファイル名だけの場合、出力されるディレクトリがeclipceで実行するときと、コマンドプロンプトで実行するときと違うのはなぜでしょうか?
eclipceで実行した場合は、作成したプロジェクトのフォルダの直下に作成されるのですが、コマンドプロンプトで実行した場合はbinフォルダの直下に作成されてしまいます。
タイトルと少々違った内容の質問になってしまいましたが、宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
split関数で区切り文字がない場合
-
eclipseでスタックサイズを変更...
-
コミット前の更新データをチェ...
-
JAVAにのeclipseに関する質問で...
-
Javascriptの値をJava(JSP)へ渡...
-
Eclipse(JAVA)のデバッグで他...
-
「ワークスペースをビルド中」...
-
環境変数設定で
-
java 外部プログラムの実行
-
Google Colabでimport soxが出...
-
Javaで年月の取得(YYYYMM形式で)
-
jasper.exceptionとは?
-
jdbcでinsert,delete,createをe...
-
JAVA(またはTOMCAT)でのスケ...
-
[JAVA]evalで文字列を計算式に!
-
Eclipseでプログラム実行時に引...
-
javaを実行するにはサーバーが...
-
NoClassDefFoundError: javax/m...
-
バイナリーコードと、ソースコ...
-
JavaScriptにおけるORACLEのSQL...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
split関数で区切り文字がない場合
-
Javascriptの値をJava(JSP)へ渡...
-
eclipseでスタックサイズを変更...
-
「ワークスペースをビルド中」...
-
Javaで年月の取得(YYYYMM形式で)
-
jdbcでinsert,delete,createをe...
-
JAVAにのeclipseに関する質問で...
-
Eclipse(JAVA)のデバッグで他...
-
環境変数設定で
-
コミット前の更新データをチェ...
-
eclipseのjavaを実行できない
-
jasper.exceptionとは?
-
Worksheet_Changeが動かない
-
javascriptで、style undefined...
-
Eclipseで実行>Javaアプリケー...
-
エクリプスで実行時、最新クラ...
-
NoClassDefFoundError: javax/m...
-
Javascriptのパーミッション
-
eclipseで「サーバーで実行」表...
-
Eclipseで実行できてコマンドプ...
おすすめ情報