Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

Java プログラムを作成している時に、「シンボルを見つけられません」とエラーが表示された経験がある人もいるのではないでしょうか?このエラーは、変数やクラス、メソッドなどの名前が間違っている場合や、クラスを使用する時に必要なインポートがされていない時に発生します。

この記事では、「シンボルを見つけられません」というエラーが発生した時の対処法について解説していきます。

エラーが発生するコードの例

実際に「シンボルを見つけられません」のエラーが発生するコードを見てみましょう。

import が不足している時のエラー

次の例は、ArrayList クラスを使った処理であるであるが、importjava.util.* を指定していないため、コンパイルエラーになるコードです。

public class Main{
    public static void main(String[] args){
        List<String> list = new ArrayList<String>();
        list.add("java");
        list.add("ruby");
        System.out.println(list);
    }
}

上のコードを実行しようとすると、次のように「シンボルを見つけられません」のエラーが発生します。

Main.java:3: error: cannot find symbol
        List<String> list = new ArrayList<String>();
        ^

このコンパイルエラーを修正する場合は、コードの先頭に import java.util.* を追加します。

import java.util.*;

public class Main{
    public static void main(String[] args){
      List<String> list = new ArrayList<String>();
~ 省略 ~

変数名が誤っている時のエラー

変数名の指定を誤り、宣言を行っていない変数を使用しようとした時も「シンボルを見つけられません」のエラーが発生します。

次の例は、String 型の変数を varName1 という名前で宣言していますが、次の行で誤って varName2 で変数名を参照しようとした時のコードです。

public class Main {
    public static void main(String[] args){
        String varName1 = "Hello Java";
        System.out.println(varName2);
    }
}

上のコードを実行しようとすると、次のように「シンボルを見つけられません」のエラーが発生します。

Main.java:6: error: cannot find symbol
        System.out.println(varName2);
                           ^

このコンパイルエラーを修正する方法は、もちろん変数名を varName1 に修正します。

System.out.println(varName2);
↓↓↓
System.out.println(varName1);

大文字小文字の違い

Java は大文字と小文字を区別するプログラミング言語です。

そのため、同じクラス名や変数名であっても大文字・小文字のスペルを間違えるだけでも別物となり「シンボルを見つけられません」のエラーが発生します。

次のコードを見てください。一見すると誤りがないように見えますが、3行目の StringBuilder の宣言の一部が小文字で stringBuilderとなっているため、「シンボルを見つけられません」のエラーが発生します。

public class Main {
    public static void main(String[] args){
        StringBuilder sb = new stringBuilder();
        sb.append("Java");
        sb.append("Ruby");
        sb.append("Python");

        System.out.println(sb.toString()); 
    }
}

■ コンパイル結果

Main.java:9: error: cannot find symbol
        StringBuilder sb = new stringBuilder();
                               ^

このコンパイルエラーを修正する方法は、もちろん stringBuilderの先頭一文字目を大文字にしてStringBuilder sb = new stringBuilder();と修正します。

private メンバを参照しようとした時のエラー

こちらは「シンボルを見つけられません」とはエラーの内容が異なりますが、公開されていないメンバーにアクセスしようとした場合も、コンパイルエラーが発生します。

次の例は、MyClass クラスの private メンバに Main クラスからアクセスしているコードです。

class MyClass {
    private static int calc(int x, int y) {
      return x + y;
    }
}

public class Main {
    public static void main(String[] args){
        MyClass.calc(1, 2);
    }
}

上のコードを実行しようとすると、「MyClassでプライベートアクセスがあります」というコンパイルエラーが発生します。

Main.java:9: error: calc(int,int) has private access in MyClass
        MyClass.calc(1, 2);
               ^

このコンパイルエラーを修正する方法は、MyClass クラスの calc メソッドを public スコープに変更するか、private スコープのメソッド呼び出しを削除する2つの修正方法があります。

外部ライブラリの参照エラー

外部の jar ファイルの参照パスの不備などにより、正常に jar ファイルが参照できていない時も「シンボルを見つけられません」のエラーが発生します。

「シンボルが見つかりません」が発生したら

ここまで「シンボルが見つかりません」のエラーが発生する原因について解説してきました。

このエラーが発生した時は、次のようなことをチェックしましょう。

まとめ

「シンボルが見つかりません」のエラーが発生する原因と対処法について解説してきました。

コンパイルエラーが発生した時に、素早くエラーを取り除くのもエンジニアとして重要なスキルですので、是非この記事を参考にエラーの対処を行なっていきましょう。

【関連記事】
【初心者向け】Javaのエラー解決方法と頻出エラー3選

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。