質問: D:¥dev¥java¥20180729 という位置にあるmainクラスのパッケージ名を dev.java.20180729 にしたところエラーが出ました。 ネット上で調べて見ても「ディレクトリの階層と同じ様に付ける。」というような事しか書いてなく、私物の本にも同じような事が書いて有ります。どの様にするのが正解なのでしょうか。 ちなみにこのようなコードでこのようなエラーが出ました ソース ``` package "dev.java.20180729"; public class Main{ public static void main(String [] args){ System.out.println("HelloWorld"); } } ``` エラー [Java] Syntax error on tokens, delete these tokens
回答: 質問の例で言うと、`20180729`がパッケージ名の命名規約に違反しているためと思います。 最初の文字は`Character.isJavaIdentifierStart(int codepoint)`が`true`を返す文字である必要があり、慣例的に言えば、アルファベットである必要がある、ということです。 #厳密にどの文字が使えるかは、上記文書を参照してください。(※Java8のjavadocです) ちなみに、2文字目以降については`Character.isJavaIdentifierPart(int codepoint)`で判断します。 #数字も利用可能です。 なので、 > > 「ディレクトリの階層と同じ様に付ける。」 > > > というよりは、 > > パッケージ名と同じ階層のディレクトリを作成し、そこにファイルを配置する。 > > > と理解するのがよいと思います。 ### 追記 ソースコード例が追記されたので、回答を追記します。 ``` package "dev.java.20180729"; ``` の箇所のダブルクオートは不要です。 前述の回答と合わせると、例えば`20180729`を`d20180729`にして、 ``` package dev.java.d20180729; ``` と記述すればよいです。(当然ファイルは`dev\java\d20180729`以下に配置)