現在Javaを勉強しているのですが、
javacやjavaコマンドの使い方がいまいちわかりません。
教えていただきたいこと
1, パッケージ分割をする際のディレクトリ構造について(または最低限のディレクトリ構造ルール)
2, javac、javaコマンドの使い方について
です。
ディレクトリツリー、ファイル内容は以下のようになっています。
samplejava ├ src │ └ sampleapp │ ├ logics │ │ └ Logics.java │ └ main │ └ Main.java └ bin
Java
1//Main.java 2package sampleapp.main; 3import sampleapp.logics. *; 4 5public class Main{ 6 public static void main(String[] args){ 7 8 System.out.println("Hello Java"); 9 10 int result = Logics.calc(2, 5); 11 System.out.println(result); 12 13 } 14} 15
Java
1//Logics.java 2package sampleapp.logics; 3 4public class Logics{ 5 6 public static int calc(int a, int b){ 7 return a * b; 8 } 9 10} 11
以下のコマンドではエラーが出るのですが、
//javacコマンド xxxx@xxx main % javac Main.java
//エラー結果 xxxx@xxx main % javac Main.java Main.java:2: エラー: パッケージsampleapp.logicsは存在しません import sampleapp.logics. *; ^ Main.java:9: エラー: シンボルを見つけられません int result = Logics.calc(2, 5); ^ シンボル: 変数 Logics 場所: クラス Main エラー2個
調べて拾ったこちらのコマンドではしっかりコンパイルしてくれます。
//javacコマンド xxxx@xxx samplejava % javac -sourcepath src -d bin src/sampleapp/main/Main.java
また、実行の際も以下のコマンドでエラーなく実行してくれました。
//javaコマンド xxxx@xxx samplejava % java -cp bin sampleapp.main.Main
//実行結果 Hello Java 10
失敗例と成功例の違いですが、
まず、実行時のディレクトリが違うのはわかります。(なぜmainディレクトリではダメなのかは理解していません)
それと、コマンドのオプションが失敗例では記述していないのもわかりますが、なぜこの記述じゃないとダメなのかは理解していません。
それと、ターミナルの場合、毎回以下のようなコードでコンパイル、実行をしないといけないのでしょうか?
//javacコマンド xxxx@xxx samplejava % javac -sourcepath src -d bin src/sampleapp/main/Main.java //javaコマンド xxxx@xxx samplejava % java -cp bin sampleapp.main.Main
色々と調べているのですが、中々理解できる内容がなく困っています。
何を聞けばいいのかもいまいち理解していない状態ですので、修正等あれば遠慮なくコメントいただけたらと思います。
ご回答よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー