はじめまして。質問があります。
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- Java マイクラjavaでForgeを入れたいのですが、インストールした.jarファイルが展開されてしまい中 1 2023/07/28 22:30
- C言語・C++・C# C言語 3 2022/10/04 15:07
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- その他(コンピューター・テクノロジー) FPGA構成データ、ソフトウェアデータ をボード Zybo Z20 用に転送する方法 1 2023/07/25 18:19
- その他(プログラミング・Web制作) マウスを使用してpowershellのプログラムを起動して、引数リストを渡したい 1 2022/11/07 21:39
- PHP eclipse pleiades phpのインストールについて 1 2023/02/03 17:15
- その他(プログラミング・Web制作) フォルダ内の特定 拡張子のファイルを一括実行するBat ファイルについて 4 2022/04/17 09:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
split関数で区切り文字がない場合
-
Javascriptの値をJava(JSP)へ渡...
-
「ワークスペースをビルド中」...
-
コミット前の更新データをチェ...
-
javacでStackOverflowError
-
eclipseのjavaを実行できない
-
Eclipse(JAVA)のデバッグで他...
-
eclipse実行ができない
-
JAVAにのeclipseに関する質問で...
-
jasper.exceptionとは?
-
エクセルマクロエラー'Global'...
-
javascriptで、style undefined...
-
eclipseでスタックサイズを変更...
-
Javascriptのパーミッション
-
NoClassDefFoundError: javax/m...
-
コマンドライン引数の掛け算の...
-
Javaで年月の取得(YYYYMM形式で)
-
VBAのエラー:438
-
mySQLでロールバックされずコミ...
-
エクリプスで実行時、最新クラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
split関数で区切り文字がない場合
-
「ワークスペースをビルド中」...
-
eclipseでスタックサイズを変更...
-
コミット前の更新データをチェ...
-
JAVAにのeclipseに関する質問で...
-
Javaで年月の取得(YYYYMM形式で)
-
Javascriptの値をJava(JSP)へ渡...
-
Eclipse(JAVA)のデバッグで他...
-
エクリプスで実行時、最新クラ...
-
jasper.exceptionとは?
-
環境変数設定で
-
eclipseで「サーバーで実行」表...
-
eclipseのjavaを実行できない
-
Worksheet_Changeが動かない
-
Google Colabでimport soxが出...
-
Javascriptのパーミッション
-
javaからVBAを実行する方法を教...
-
javascriptで、style undefined...
-
バイナリーコードと、ソースコ...
-
[JAVA]evalで文字列を計算式に!
おすすめ情報