【Java初心者向け】「シンボルを見つけられません」とは?エラーの意味・原因・解消方法

【Java初心者向け】「シンボルを見つけられません」とは?エラーの意味・原因・解消方法

Javaでプログラミングをしていると「シンボルを見つけられません」というエラーが発生することがあります。

本記事では、プログラミング初心者の方向けに、未経験者向け無料プログラミングスクール「アキバ・テックドリーム・アカデミー」(以下、テクドリ)の講師が、このエラーの意味や発生原因、解消方法について分かりやすく解説します。

目次

    「シンボルを見つけられません」とは

    「シンボルを見つけられません」とは、特定のシンボルが見つからない場合に発生する例外です。
    ここでの「シンボル」とは識別子とほぼ同じ意味で使われ、変数・メソッド・クラスなどを指します。

    「シンボルを見つけられません」が発生するのは下記のような場合です。

    • シンボルのスペルミス
    • シンボルがスコープの範囲外
    • 使用するクラスのimport記載漏れ

    例外については詳しくは別の記事で解説しています。

    【初心者向け】例外・例外処理とは?Javaでの書き方も紹介! - TECH DREAM
    プログラミングを始めたばかりの方にとって、「例外」という言葉は少し難しく感じるか...
    tech-dream.school

    発生例・解消方法

    シンボルのスペルミスの場合

    シンボルとなる変数・メソッド・クラスなどがスペルミスをしている場合「シンボルを見つけられません」が発生します。

    ここでは、addメソッドがスペルミスをしているので、該当箇所を修正します。

    例外が発生するサンプルコード

    class Test {
      public static void main(String[] args) {
    
        int num1 = 5;
        int num2 = 10;
    
        //メソッド名にdが1つ足りない
        ad(num1, num2);
      }
    
      public static void add(int num1,int num2) {
    
        System.out.print(num1 + num2);
      }
    }
    実行結果
    Test.java:6: エラー: シンボルを見つけられません
        ad(num1,num2);
        ^
      シンボル:   メソッド ad(int,int)
      場所: クラス Test
    エラー1個

    解消例

    class Test {
      public static void main(String[] args) {
    
        int num1 = 5;
        int num2 = 10;
    
        //足し算をするaddメソッド呼び出し
        add(num1, num2);
      }
    
      public static void add(int num1,int num2) {
    
        System.out.print(num1 + num2);
      }
    }
    実行結果
    15

    シンボルがスコープの範囲外

    シンボルがスコープの範囲外にある場合「シンボルを見つけられません」が発生します。

    ここでは、if文内で初期化しているint変数の「result」をif文外で使用しているため、対象の変数をif文外で初期化します。

    例外が発生するサンプルコード

    class Test {
      public static void main(String[] args) {
    
        int num1 = 10;
        int num2 = 5;
    
        // num1、num2どちらも0でなければ乗算
        if (num1 != 0 && num2 != 0) {
          int result = num1 * num2;
        }
    
        System.out.println(result);
      }
    }
    
    実行結果
    Test.java:12: エラー: シンボルを見つけられません
        System.out.println(result);
                           ^
      シンボル:   変数 result
      場所: クラス Test
    エラー1個

    解消例

    class Test {
      public static void main(String[] args) {
    
        int num1 = 10;
        int num2 = 5;
        
        //if文の外で初期化する
        int result = 0;
    
        //num1、num2どちらも0でなければ乗算
        if (num1 != 0 && num2 != 0) {
          result = num1 * num2;
        }
    
        System.out.println(result);
      }
    }
    
    実行結果
    50

    使用するクラスのimport記載漏れ

    使用するクラスのimportの記載が漏れている場合「シンボルを見つけられません」が発生します。

    対象クラスを読み込むimport文を追加します。

    例外が発生するサンプルコード

    class Test {
      public static void main(String[] args) {
    
        List list = new ArrayList();
    
        list.add("アキバ ");
        list.add("テックドリーム ");
        list.add("アカデミー");
    
        for (String str : list) {
          System.out.print(str);
        }
      }
    }
    実行結果
    Test.java:5: エラー: シンボルを見つけられません
        List list = new ArrayList();
        ^
      シンボル:   クラス List
      場所: クラス Test
    Test.java:5: エラー: シンボルを見つけられません
        List list = new ArrayList();
                                ^
      シンボル:   クラス ArrayList
      場所: クラス Test
    エラー2個

    解消例

    //import文追加
    import java.util.ArrayList;
    import java.util.List;
    
    class Test {
      public static void main(String[] args) {
    
        List list = new ArrayList();
    
        list.add("アキバ ");
        list.add("テックドリーム ");
        list.add("アカデミー");
    
        for (String str : list) {
          System.out.print(str);
        }
      }
    }
    
    実行結果
    アキバ テックドリーム アカデミー
    

    「シンボルを見つけられません」のまとめ

    今回は、「シンボルを見つけられません」というエラーについて解説しました。

    「シンボルを見つけられません」は、下記のような場合に発生します。

    • シンボルのスペルミス
    • シンボルがスコープの範囲外
    • 使用するクラスのimport記載漏れ

    エラーメッセージ内に対象のシンボルや場所が記載されています。
    記載箇所に注目して、シンボルがなぜ見つからないのか原因を見つけて修正しましょう。

    まずは選考会へ!

    「プログラマーになって一緒に働きませんか?」
    テックドリームの選考会は、選考だけでなく「相互理解」の場。不安なことも直接ご相談いただけます。


    電話でのご予約

    Webかんたん予約ができない場合や、ご質問がございましたら、
    お気軽にお電話ください。

    0120-262-242
    9:00~18:00(土日祝を除く)

     

    >テクド・リム

    テクド・リム


    「テックドリーム」の公式キャラクター。
    プログラマーだった父の影響を受けて、
    夢に向かって日々勉強に励むプログラマーのタマゴ。
    夢は「世界を変える、すごいプログラマーになること!」

    CTR IMG