【Java初心者向け】ClassNotFoundExceptionとは?原因・解消方法

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ヶ月以上の学習期間が設けられており、基礎から段階的に学べます。

卒業後は運営企業のメディアファイブの正社員エンジニアとして採用されるため、就職・転職活動の必要はありません。

\ 詳しくはこちら /
テクドリとは
無料説明会・体験セミナー実施中です!

まずは無料説明会・体験セミナー

テックドリームは無料のプログラミングスクールです。「プログラマってどういう仕事?」「自分にできるのかな?」という方も、まずは体験セミナーでプログラミングに触れてみませんか?テックドリームは未経験の方を丁寧にサポートする体制をご用意しています。不安なことや、入校までの疑問点なども気軽にご相談いただけます。

Webかんたん予約

専用の予約フォームより、およそ60秒で簡単にお申込みいただけます。

電話でのご予約

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

0120-262-242
9:00~18:00(土日祝を除く)
最新情報をチェックしよう!
>テクド・リム

テクド・リム


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

彼女が通うプログラミングスクールについては「テクドリとは」ページにて紹介中!

CTR IMG