teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

敬称つけわすれ

2017/10/18 03:06

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -24,7 +24,7 @@
24
24
  javac Calcapp/main/Calc.java (コンパイル)
25
25
  java Calcapp.main.Calc (実行)
26
26
 
27
- とするのが一番単純な方法です。(keicha_hrsのコメントにあるのと同じ方法です)
27
+ とするのが一番単純な方法です。(keicha_hrsさんのコメントにあるのと同じ方法です)
28
28
 
29
29
  (2) Javaのソースファイルとclassファイルを別々のディレクトリーへ作成する
30
30
 

1

追記

2017/10/18 03:06

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -5,4 +5,50 @@
5
5
  javacならどのディレクトリーで、どんなパラメーターを指定したかといったことです
6
6
  - 一応OSも書いておいた方がよいでしょう(Mac/Linux/Windowsのどれか程度)
7
7
 
8
- こうしたことを明確にしてみてください。そうすれば原因と対処もはっきりすると思います。
8
+ こうしたことを明確にしてみてください。そうすれば原因と対処もはっきりすると思います。
9
+
10
+ ---
11
+ 追記:
12
+
13
+ keicha_hrsさん回答のようにすればコンパイルと実行ができると思いますので問題は解決できると思います。若干蛇足的な補足をしてみます。
14
+
15
+ (1) ソースファイルはパッケージ名と正確に一致したディレクトリーに配置する
16
+
17
+ 大文字小文字を一致させなければならないのはkeicha_hrsさんコメントの通りです。ただ、2回目のコンパイルのときに「javac java/Calc.javaでコンパイルが成功した」と書かれているのですが、もしそのとおりならCalc.javaはjavaディレクトリーの直下に置いてあったはずです。しかしそういう場所に置くのはお勧めできません。Calc.javaが他のパッケージのクラスを全く参照していなければコンパイル自体はできますが、その代わり今回の問題のようにCalcクラスを別のソースファイルから参照するようなことができなくなってしまいます。コンパイルした結果できたclassファイルを別の場所へ無理やり移動するという手順も通常はやるべきではないです。最初から
18
+
19
+ java/Calcapp/main/Calc.java
20
+ java/Calcapp/logics/CalcLogic.java
21
+
22
+ のように置いておき、javaディレクトリーで
23
+
24
+ javac Calcapp/main/Calc.java (コンパイル)
25
+ java Calcapp.main.Calc (実行)
26
+
27
+ とするのが一番単純な方法です。(keicha_hrsのコメントにあるのと同じ方法です)
28
+
29
+ (2) Javaのソースファイルとclassファイルを別々のディレクトリーへ作成する
30
+
31
+ javacではなくIDEを使ってjavaプログラミングをするとわかりますが、classファイルはソースファイルとは別のディレクトリーに作成されるのが普通です。例えば以下のように。
32
+
33
+ java/Calcapp/main/Calc.java
34
+ java/Calcapp/logics/CalcLogic.java
35
+
36
+ bin/Calcapp/main/Calc.class
37
+ bin/Calcapp/logics/CalcLogic.class
38
+
39
+ そうなっていると「ソースだけを誰かに渡したい」、「クラスファイルだけを消したい」などという場合に都合がよいのです。javacを使う場合でもこのようにできます。例えばjavaディレクトリーでコンパイル&実行をするなら
40
+
41
+ javac -d ../bin Calcapp/main/Calc.java (コンパイル)
42
+ java -cp ../bin Calcapp.main.Calc (実行)
43
+
44
+ さらにjavaディレクトリーの一つ上のディレクトリーでコンパイル&実行するなら
45
+
46
+ javac -d bin -sourcepath java java/Calcapp/main/Calc.java (コンパイル)
47
+ java -cp bin Calcapp.main.Calc (実行)
48
+
49
+ (3) パッケージ名は全部小文字にしましょう
50
+
51
+ 本件の問題とは関係ありませんが、これは習慣です。大文字のパッケージ名も目にすることはなくはないですが、少々異質に見えます。小文字のみで統一するのがよいです。当然ながら(1)に書いたようにソースファイルを置くディレクトリー名もパッケージ名に合わせて全部小文字にします。
52
+
53
+
54
+ 最後に、質問文に状況を追記されてますが、少々曖昧です。「ディレクトリー構成にはソースファイルをどこに置いたかも明記する」「javacやjavaコマンドをどのディレクトリーで実行したかを明記する」ことも忘れないでください。