Javaの大文字小文字ルール
予約語は小文字、クラス名は大文字始まり。この規則を破ったときに出るエラーを網羅します。
エラーメッセージの読み方
Main.java:1: error: class, interface, enum, or record expected
Main.java- ファイル名
1- 行番号 — javacが異常に気づいた位置。原因の行とは限りません
error- 種別 — コンパイルエラー。実行まで到達しません
class, interface, enum, or record expected- 内容 — javacが期待していたもの、または見つけられなかったもの
このエラーが出る典型パターン
パターン1
1 Public class Main { ^ 2 public static void main(String[] args) { 3 System.out.println("Hello"); 4 } 5 }
Main.java:1: error: class, interface, enum, or record expected
Javaの予約語はすべて小文字です。Publicは予約語ではなく、ただの識別子として扱われます。
直し方: Public を public にします。
広告
広告スロット(未設定)
パターン2
1 public class Main { 2 public static void main(String[] args) { 3 system.out.println("Hello"); ^ 4 } 5 }
Main.java:3: error: package system does not exist
クラス名は大文字始まりです。小文字で書くとパッケージ名と解釈され、存在しないと報告されます。
直し方: system を System にします。
パターン3
1 public class Main { 2 public static void main(String[] args) { 3 string name = "Taiyo"; ^ 4 System.out.println(name); 5 } 6 }
Main.java:3: error: cannot find symbol
symbol: class string
Stringはクラスなので大文字始まりです。intやdoubleのような基本型だけが小文字です。
直し方: string を String にします。
パターン4
1 public class Main { 2 public static void main(String[] args) { 3 int n = 5; 4 If (n > 3) { ^ 5 System.out.println("big"); 6 } 7 } 8 }
Main.java:4: error: ';' expected
ifは予約語で全て小文字です。Ifと書くと予約語として認識されず、識別子と丸括弧の並びとして読まれ、文の終わりを期待されて構文エラーになります。
直し方: If を if にします。
パターン5
1 public class Main { 2 public static void main(String[] args) { 3 For (int i = 0; i < 3; i++) { ^ 4 System.out.println(i); 5 } 6 } 7 }
Main.java:3: error: '.class' expected
forも予約語なので小文字限定です。Forと書くと識別子として扱われ、直後の丸括弧の並びが型リテラルの記述と誤解釈され、一見forとは無関係に見えるエラーになります。
直し方: For を for にします。
よくある誤解
エディタで色が変わらないときは、予約語として認識されていない合図です。エラーを見る前に気づけます。
まとめ
Javaの大文字小文字ルールは初級でつまずきやすい項目です。上の5パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。