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

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

Javaでプログラミングを行う際「ClassNotFoundException」というエラーが出力されたことはありませんか?

この記事では、無料プログラミングスクール「アキバ・テックドリーム・アカデミー」(以下、テクドリ)の講師が「ClassNotFoundException」の意味と発生する原因、そして対処方法について解説いたします!

テクドリでは、未経験者に向けてプログラミングの基礎を解説する記事を公開しています。

目次

    ClassNotFoundExceptionとは

    ClassNotFoundExceptionとは、以下のメソッドで対象のクラスを読み込もうとした際に、指定された名前のクラスの定義が見つからなかった場合にスローされる例外です。

    • ClassクラスのforNameメソッド
    • ClassLoaderクラスのfindSystemClassメソッド
    • ClassLoaderクラスのloadClassメソッド
    【初心者向け】メソッドとは?関数との違いも解説 - TECH DREAM
    無料プログラミングスクール「アキバ・テックドリーム・アカデミー」(以下、テクドリ...
    tech-dream.school
    【初心者向け】例外・例外処理とは?Javaでの書き方も紹介! - TECH DREAM
    プログラミングを始めたばかりの方にとって、「例外」という言葉は少し難しく感じるか...
    tech-dream.school

    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が発生した場合は、実行時に指定された名前のクラスファイルが、正しく作成されているかを確認しましょう。

    まずは選考会へ!

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


    電話でのご予約

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

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

     

    >テクド・リム

    テクド・リム


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

    CTR IMG