

Javaについて学習中です。
①Mainクラスで「Hello World」と出力するテストを行ったところ、無事コンパイル、実行が出来ました。Mainクラスは、language/Java/Main.java に位置します。
②しかし、ディレクトリ内がファイルだらけで見えにくくなると思ったので、Javaディレクトリ内にクラスファイルだけを入れるClassディレクトリを作成しました。 language/Java/Class
③①でデバッグできたMainクラスを再度コンパイルすると成功しましたが、実行すると、
「Main.classが見つからなかったか、ロードされなかった」と出力されます。
コンパイル : javac -d Class Main.java // success
実行 : java Class/Main.class // error
なぜ、エラーが出たのでしょうか?どのように対処したらよいのでしょうか?
No.3ベストアンサー
- 回答日時:
例えばカレントディレクトリに対し
ソースの検索場所を src
クラスファイルの格納場所を classes
とすると
パッケージ info.nakamuri.app.hello の Mainクラスをコンパイルする
してみましょう。
ソースファイルは
Main.java
----------
package info.nakamuri.app.hello;
public class Main {
public static void main(String[] argv) {
System.out.println("Hello World\n");
}
}
----------
を src\info\nakamuri\app\hello
に置き
javac -d classes -sourcepath src src\info\nakamuri\app\hello\Main.java
でコンパイル
クラスファイルは classes\info\nakamuri\app\hello に
Main.class ができます。
実行は
java -cp classes info.nakamuri.app.hello.Main
これでだいたい雰囲気はわかりますか?
パッケージ名は会社のドメインや個人のドメイン名から作るのが
普通です。
めんどくさいけど、クラスの分類と、他人とクラス名が
重複しないようにする工夫です。大人数でソフトを作る時や
ライブラリを公開する時に必要。
#因みに info.nakamuri は私個人のドメインなので、
#使わないでください(^^;
2階も詳しい説明ありがとうございました。
package有無どちらでも出来ました。
大規模な開発となればpackage使った方がいいですね。ただ、個人で学習する程度であれば、packageを書かない方がディレクトリの移動だったりめんどくさくないのでいいかもしれません。
packageに慣れるために、きちんと書くことも重要だと思いますが…
No.2
- 回答日時:
取り合えず、パッケージ無し (ソース内に package の記述が無い)
を前提に説明すると
コンパイルは
javac -d クラスファイルの格納位置 -sourcepath ソースファイル検索位置 ソースファイル名 ・・・・
カレントディレクトリが language/Java なら
javac -d Class Main.java
カレントディレクトリが language なら
javac -d Java\Class -sourcepath Java Java\Main.java
実行は
カレントディレクトリが language/Java なら
java -cp Class Main
-cp は実行時のクラスファイルの格納位置を指定します。
カレントディレクトリが language なら
java -cp java\Class Main
クラスファイルの格納位置 や ソースファイル検索位置 は
package の表すクラス階層のルートレベルを表すので注意!
packageを使っていない場合は、単なるファイルの格納ディレクトリです。
Javaではクラスの階層構造 =ソースやクラスファイルのディレクトリの階層構造 なので、
早めに package に慣れておくことをおすすめします。
詳しくありがとうございます。
今回はソースコードにpackage文を入れていません。
もし、package文を入れるとしたら、コンパイル、実行方法はどのように変わるのでしょうか?各ファイルは以下の場所にあります。
ソースコード : language/Java/Main.java
クラスファイル : language/Java/Class/Main.class
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Visual Basic(VBA) フレームワーク「4.8.1」で、[Sub Main]が動かない。助けて下さい 3 2022/11/14 15:40
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipse・プロジェクトで、フォ...
-
「削除するか、クラスパスの正...
-
Eclipse「リフレッシュ」と「ク...
-
JARファイル・JARコマンドに関して
-
【Eclipse】パッケージ・エクス...
-
eclipse でclassesフォルダーが...
-
earファイルを展開する方法
-
SVFの設定について:クラスパス...
-
java クラスファイルとソースコ...
-
ResourceBundleクラスの使い方
-
javaクラスファイルをEclipseで...
-
『ClassNotFoundException: org...
-
Eclipseで、クラスを新規作成す...
-
classファイルについて
-
コンパイルをしようとするとエ...
-
javaで3Dを作りたいんですが、...
-
コンパイルした後 java (class...
-
テキストファイルが読み込めない
-
EclipseでHTTP404エラーが出る。
-
JavaFXの音楽再生でForでループ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
classファイルについて
-
SVFの設定について:クラスパス...
-
Eclipse・プロジェクトで、フォ...
-
javaクラスファイルをEclipseで...
-
Eclipse「リフレッシュ」と「ク...
-
earファイルを展開する方法
-
eclipse でclassesフォルダーが...
-
「メイン・マニフェスト属性が...
-
jdbcドライバのjarファイルにク...
-
【Eclipse】パッケージ・エクス...
-
java クラスファイルとソースコ...
-
プログラム実行の際に、「ソー...
-
EclipseでHTTP404エラーが出る。
-
Jarコマンドでマニフェストファ...
-
「main メソッドを持つクラスが...
-
サーバから落としてきたWebアプ...
-
EclipseでのJSP・Servlet開発に...
-
「削除するか、クラスパスの正...
-
ファイルのパスの取得について
-
VisualStudioでC++クラスを追加...
おすすめ情報