Javaでプログラミングを行う際「ClassNotFoundException」というエラーが出力されたことはありませんか?
この記事では、無料プログラミングスクール「アキバ・テックドリーム・アカデミー」(以下、テクドリ)の講師が「ClassNotFoundException」の意味と発生する原因、そして対処方法について解説いたします!
テクドリでは、未経験者に向けてプログラミングの基礎を解説する記事を公開しています。
ClassNotFoundExceptionとは
ClassNotFoundExceptionとは、以下のメソッドで対象のクラスを読み込もうとした際に、指定された名前のクラスの定義が見つからなかった場合にスローされる例外です。
- ClassクラスのforNameメソッド
- ClassLoaderクラスのfindSystemClassメソッド
- ClassLoaderクラスのloadClassメソッド
プログラミングを始めたばかりの方にとって、「例外」という言葉は少し難しく感じるかもしれません。 しかし、例外はプログラムの動作を正しく理解し、扱うために欠かせない重要な概念です。 簡単に言えば、例外とは、プログラムが予期しない事態に[…]
ClassNotFoundExceptionが発生する例と解消方法
ClassNotFoundExceptionが発生する原因は様々ですが、主に次のようなものがあります。
- クラス名のスペルミスの場合
- ファイル名とクラス名が一致していない場合
この他にも、クラスパスなどが原因で例外が発生する場合もありますが、ここでは初心者が陥りがちな上記2点の発生例を元に、解消方法を紹介します。
クラス名のスペルミスの場合
サンプルコード(Sample.java)
//クラス名誤り(正:Sample → 誤:Samplu)
class Samplu {
public static void main(String[] args) {
System.out.println("test");
}
}
実行結果
エラー: メイン・クラスSampleを検出およびロードできませんでした
原因: java.lang.ClassNotFoundException: Sample
解消例
スペルミスは、自分では気づきにくいミスの一つです。クラス名を直接コピー&ペーストすると、ミスが起こりにくいです。
//クラス名を修正
class Sample {
public static void main(String[] args) {
System.out.println("test");
}
}
実行結果
test
クラス名がファイル名と一致していない場合
サンプルコード(Test.java)
class Sample {
public static void main(String[] args) {
System.out.println("test");
}
}
コンパイル・実行結果
C:\JAVA>javac Test.java
C:\JAVA>java Test
エラー: メイン・クラスTestを検出およびロードできませんでした
原因: java.lang.ClassNotFoundException: Test
解消例①
ファイル名とクラス名を一致させます。
ファイル名をTest.javaからSample.javaに修正し、コンパイル・実行します。
コンパイル・実行結果
C:\JAVA>javac Sample.java
C:\JAVA>java Sample
test
解消例②
コンパイル時に作成されるクラスファイルの名前に注意して実行します。ファイル名はTest.javaのままコンパイルし、Sample.classを実行します。
コンパイル・実行結果
C:\JAVA>javac Test.java
C:\JAVA>java Sample
test
ClassNotFoundExceptionのまとめ
今回は、プログラミング初心者が最初につまづく例外のひとつ、ClassNotFoundExceptionについて解説しました。
ClassNotFoundExceptionとは、指定された名前のクラスの定義が見つからなかった場合にスローされる例外です。
下記のメソッドで対象のクラスを読み込もうとした際に、指定された名前のクラスの定義が見つからなかった場合にスローされます。
- ClassクラスのforNameメソッド
- ClassLoaderクラスのfindSystemClassメソッド
- ClassLoaderクラスのloadClassメソッド
ClassNotFoundExceptionが発生した場合は、実行時に指定された名前のクラスファイルが、正しく作成されているかを確認しましょう。
当校テクドリは、プログラミング未経験者でも学べる無料のプログラミングスクールです。
現役エンジニアの講師が、学習をしっかりサポートします。
さらに、6ヶ月以上の学習期間が設けられており、基礎から段階的に学べます。
卒業後は運営企業のメディアファイブの正社員エンジニアとして採用されるため、就職・転職活動の必要はありません。
\ 詳しくはこちら /
テクドリとは
無料説明会・体験セミナー実施中です!