HOWTO · Java

Java でのクラスの予期されるエラー

このガイドでは、Java で予想される .class エラーについて調べます。

このページの内容

このガイドでは、Java での '.class' expected エラーが何であるかを調べます。

それはどのような種類のエラーで、いつ発生しますか? なぜそれが発生し、その解決策は何ですか?

それでは、これ以上遅れることなく、飛び込みましょう。

コンパイル時エラー

'.class' expected エラーはコンパイル時のエラーです。 これは実行時エラーだと考える人もいるかもしれませんが、それは誤りです。

コンパイルが成功すると実行時エラーが発生しますが、実行時に問題がありました。

すべての実行時情報がコンパイラに渡されるわけではないため、コンパイラはコンパイル中に実行時エラーを検出できません。 したがって、コンパイラが混乱するようにコードが記述されているため、'.class' expected エラーはコンパイル時に分類されます。

'.class' が予期される Java のエラー

Java でコードを書くときはいつでも、.class expected エラーが見つかる可能性があります。 コードが一見完璧に見えるのに、これが何なのか心配する人もいるかもしれません。

しかし、これは心配する必要はありません。単純なミスにより、中括弧が欠落しているように見えたり、セミコロンの問題やその他の構文エラーが発生したりするためです。

Java では、構文、中括弧、およびセミコロンが重要な役割を果たします。 コードのブロックを定義する中括弧と、次の行をコンパイルするためにコード行が終了したことをコンパイラーに伝えるセミコロンが必要です。

つまり、.class エラーは、Syntax Error を作成した場合に発生するエラーです。

Java の '.class' expected エラーを修正

現在、これらの間違いは徹底的な評価で修正できます。 しかし、一部のエラー (構文エラー) はユーザーには知られておらず、エラー '.class' expected が表示されると、ユーザーはこのエラーが発生した理由を理解できないため、混乱と疲労の両方が発生します。

エラーが発生すると、コンパイラは通常、それを修正するためのオプションを提案します。 問題とその解決策をユーザーに伝えますが、この場合、'.class' expected は解決策ではありません。

コンパイラがこれを提案する場合、通常は、前述のように、コードで使用されている構文の場合です。 クラスを含めることは解決策ではありません。 ユーザーに何を提案するかについてコンパイラが混乱しているだけです。

以下は、配列に与えられた数値をソートするために使用されるソート配列の例です。

import java.util.*;
public class Main {
  public static void main(String[] args) {
    int[] sorting = new int[] {4, 8, 2, 6, 7};

    Arrays.sort(sorting[]);
    System.out.println("Sorted array : ");

    for (int i = 0; i < sorting.length; i++) // to print the array
    {
      System.out.println(sorting[i]);
    }
  }
}

出力:

error: '.class' expected
Arrays.sort(sorting[]);
                   ^
1 error

上記の例に示されているように、これはシンプルな配列のソートです。角かっこ [] の単純な間違いが、コンパイラがこのコード行 Arrays.sort(sorting[]); がどこに書かれているかを理解できないために、このエラーを引き起こしました。

これは、空の角括弧を使用できない Java 構文です。 この場合、変数を渡す必要がある場合は、これが配列であることをコンパイラに通知する必要がないため、変数のみを使用する必要があります。

他のオブジェクトと同様に配列を渡します。

解決:

import java.util.*;
public class Main {
  public static void main(String[] args) {
    int[] sorting = new int[] {4, 8, 2, 6, 7};

    Arrays.sort(sorting);
    System.out.println("Sorted array : ");

    for (int i = 0; i < sorting.length; i++) // to print the array
    {
      System.out.println(sorting[i]);
    }
  }
}

出力:

Sorted array :
2
4
6
7
8

上で説明したように、角括弧が原因でエラー '.class' expected を受け取ったので、角括弧を削除するだけでプログラムを実行できます。 これは、Java 構文の要件によるものでした。

配列 sorting 自体は、型が int[] のオブジェクトです。 したがって、コンパイラは、オブジェクトとして渡される sorting[] を受け入れません。