Javaに関する質問に結構答えてませんでしたっけ・・?
(i)package (ファイル名)の役割
どこまで調べて質問に至ったのか書いてないので、丸投げに近いように感じます。
エラーになった、エラーにならなかったの経験のみでは調査としては不十分です。
~~paiza.ioについては単体ファイルでの実行になるので内部的にはデフォルトでpaiza.ioのパッケージが宣言されているのでは、と思います。
~~
とりあえず下記のような初心者向け記事に一通り目を通してください。
上記の記事はあくまで例です。
おおよそ同じようなことが書いてあると思います。
目を通した上で分からないことを質問された方が良いですね。
(ii)プログラミングコンテストなどでjavaのソースコードを提出するときpackage (ファイル名)を書く必要性(提出するのはファイル単体,一つだけです。)
そのコンテストの運営の人に聞いてください。
2018/6/22 14:55 質問の方向性が変わったので回答を修正したうえで回答を追記します。
この質問読むと多少は分かるかと。
※GoogleでJavaのパッケージについて検索したら出てきます
Eclipseでもなんでもですが、パッケージを作ると、実際には「ディレクトリ」ができます。
記事にも書いてあるように「所属」であるためです。
と書くと、
{プロジェクト名}/src/test
というディレクトリにjavaソースが設置されることとなります。
ただし、上記のようにpackage宣言しておきながらtestディレクトリになかったらどうなるでしょう?
これがpaiza.ioで起きている現象です。
パッケージをつけた場合は宣言したパッケージ名のディレクトリに置いた上で、そのパッケージ名の元に呼び出さなければなりません。
ご存知の通りpaiza.ioでは単体実行のみです。Webサービスなので宣言したパッケージのディレクトリは外部から勝手に作れません。
実行したときに実行結果にはエラーメッセージが表示されますよね?
Error: Could not find or load main class Main
Mainクラスは見つからなかった(またはロードできなかった)
paiza.ioおよびそのyoutubeの解説動画ではパッケージをつけていない(どこにも所属していない)Javaプログラムを呼び出そうとしているので、
当然 hoge.javaであれば そのhogeのMainクラスです。
パッケージが宣言されていると test.hoge.java のMainクラスを呼び出そうとします。
これがその違いです。
元の質問にあった役割について理解できたらおそらくその違いも想像できたのではないかと思います。
(オブジェクト指向に関わるところでもあるので、きちんと学んでおいた方が良いです)
退会済みユーザー
2018/06/22 05:38
退会済みユーザー
2018/06/22 06:31