Javaでプログラミングをしていると「シンボルを見つけられません」というエラーが発生することがあります。
本記事では、プログラミング初心者の方向けに、未経験者向け無料プログラミングスクール「アキバ・テックドリーム・アカデミー」(以下、テクドリ)の講師が、このエラーの意味や発生原因、解消方法について分かりやすく解説します。
「シンボルを見つけられません」とは
「シンボルを見つけられません」とは、特定のシンボルが見つからない場合に発生する例外です。
ここでの「シンボル」とは識別子とほぼ同じ意味で使われ、変数・メソッド・クラスなどを指します。
「シンボルを見つけられません」が発生するのは下記のような場合です。
- シンボルのスペルミス
- シンボルがスコープの範囲外
- 使用するクラスのimport記載漏れ
例外については詳しくは別の記事で解説しています。
プログラミングを始めたばかりの方にとって、「例外」という言葉は少し難しく感じるかもしれません。 しかし、例外はプログラムの動作を正しく理解し、扱うために欠かせない重要な概念です。 簡単に言えば、例外とは、プログラムが予期しない事態に[…]
発生例・解消方法
シンボルのスペルミスの場合
シンボルとなる変数・メソッド・クラスなどがスペルミスをしている場合「シンボルを見つけられません」が発生します。
ここでは、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記載漏れ
エラーメッセージ内に対象のシンボルや場所が記載されています。
記載箇所に注目して、シンボルがなぜ見つからないのか原因を見つけて修正しましょう。
無料のプログラミングスクール「テクドリ」の卒業生のインタビュー動画を、インスタグラムほか公式SNSにて公開中!