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

回答編集履歴

3

誤字修正

2018/06/22 06:10

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -47,8 +47,8 @@
47
47
  ```Error: Could not find or load main class Main```
48
48
  Mainクラスは見つからなかった(またはロードできなかった)
49
49
 
50
- paiza.ioおよびそのyoutubeの解説動画ではパッケージをつけていない(どこにも所属していない)Javaプログラムを予防としているので、
50
+ paiza.ioおよびそのyoutubeの解説動画ではパッケージをつけていない(どこにも所属していない)Javaプログラムを呼び出そうとしているので、
51
- 当然呼び出そうとしているのは hoge.javaであれば そのtestのMainクラスです。
51
+ 当然 hoge.javaであれば そのhogeのMainクラスです。
52
52
  パッケージが宣言されていると test.hoge.java のMainクラスを呼び出そうとします。
53
53
 
54
54
  これがその違いです。

2

質問の方向性がかわったため、回答を追記

2018/06/22 06:10

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -4,8 +4,8 @@
4
4
 
5
5
  どこまで調べて質問に至ったのか書いてないので、丸投げに近いように感じます。
6
6
  エラーになった、エラーにならなかったの経験のみでは調査としては不十分です。
7
- paiza.ioについては単体ファイルでの実行になるので内部的にはデフォルトでpaiza.ioのパッケージが宣言されているのでは、と思います。
7
+ ~~paiza.ioについては単体ファイルでの実行になるので内部的にはデフォルトでpaiza.ioのパッケージが宣言されているのでは、と思います。
8
-
8
+ ~~
9
9
  とりあえず下記のような初心者向け記事に一通り目を通してください。
10
10
 
11
11
  - [初心者のためのJava講座 > 【第13回】パッケージについて理解する](http://www.acroquest.co.jp/webworkshop/java_course/J_lecture13.html)
@@ -19,4 +19,39 @@
19
19
 
20
20
  > (ii)プログラミングコンテストなどでjavaのソースコードを提出するときpackage (ファイル名)を書く必要性(提出するのはファイル単体,一つだけです。)
21
21
 
22
- そのコンテストの運営の人に聞いてください。
22
+ そのコンテストの運営の人に聞いてください。
23
+
24
+ # 2018/6/22 14:55 質問の方向性が変わったので回答を修正したうえで回答を追記します。
25
+
26
+ この質問読むと多少は分かるかと。
27
+ ※GoogleでJavaのパッケージについて検索したら出てきます
28
+ - [teratail:Javaでpackageをつけると実行できない](https://teratail.com/questions/11017)
29
+
30
+ Eclipseでもなんでもですが、パッケージを作ると、実際には「ディレクトリ」ができます。
31
+ 記事にも書いてあるように「所属」であるためです。
32
+ ```java
33
+ package test;
34
+ ```
35
+ と書くと、
36
+ {プロジェクト名}/src/test
37
+ というディレクトリにjavaソースが設置されることとなります。
38
+
39
+ ただし、上記のようにpackage宣言しておきながらtestディレクトリになかったらどうなるでしょう?
40
+
41
+ これがpaiza.ioで起きている現象です。
42
+ パッケージをつけた場合は宣言したパッケージ名のディレクトリに置いた上で、そのパッケージ名の元に呼び出さなければなりません。
43
+ ご存知の通りpaiza.ioでは単体実行のみです。Webサービスなので宣言したパッケージのディレクトリは外部から勝手に作れません。
44
+
45
+ 実行したときに実行結果にはエラーメッセージが表示されますよね?
46
+
47
+ ```Error: Could not find or load main class Main```
48
+ Mainクラスは見つからなかった(またはロードできなかった)
49
+
50
+ paiza.ioおよびそのyoutubeの解説動画ではパッケージをつけていない(どこにも所属していない)Javaプログラムを予防としているので、
51
+ 当然呼び出そうとしているのは hoge.javaであれば そのtestのMainクラスです。
52
+ パッケージが宣言されていると test.hoge.java のMainクラスを呼び出そうとします。
53
+
54
+ これがその違いです。
55
+
56
+ 元の質問にあった役割について理解できたらおそらくその違いも想像できたのではないかと思います。
57
+ (オブジェクト指向に関わるところでもあるので、きちんと学んでおいた方が良いです)

1

修正

2018/06/22 06:01

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  > (i)package (ファイル名)の役割
4
4
 
5
- どこまで調べて質問に至ったのか書いてないので
5
+ どこまで調べて質問に至ったのか書いてないので、丸投げに近いように感じます。
6
6
  エラーになった、エラーにならなかったの経験のみでは調査としては不十分です。
7
- paiza.ioについては単体ファイルでの実行になるので内部的にはpaiza.ioのパッケージが宣言されているのでは、と思います。
7
+ paiza.ioについては単体ファイルでの実行になるので内部的にはデフォルトでpaiza.ioのパッケージが宣言されているのでは、と思います。
8
8
 
9
9
  とりあえず下記のような初心者向け記事に一通り目を通してください。
10
10