ClassNotFoundExceptionとは
クラス ClassNotFoundException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.ReflectiveOperationException
java.lang.ClassNotFoundException
アプリケーションが、クラスの文字列名を使用して次のメソッドでロードしようとしたが、指定された名前のクラスの定義が見つからなかった場合にスローされます。
ClassNotFoundException (Java Platform SE 7)
・・・だそうです。
よくわからないので動かしてみました。
15行目で例外発生。
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:259)
at exception.ClassNotFound.access(ClassNotFound.java:12)
at doukaku.DoukakuMain.main(DoukakuMain.java:15)
※ Classクラスと言うのは、Javaにおけるクラスやインターフェースを表すもの
※ 特定のクラスを利用するには「Class.forName(クラス名)」とクラス名を指定して"forName"メソッドを実行
※ スタックトレースとは
(以下引用)
スタックトレースの出力結果は、スタックというものの中身をプリントしたものです。
Java は実行時に、スタック、ヒープ、レジスタと呼ばれるメモリ領域を使用します。
ヒープにはオブジェクトやクラスなどのデータが含まれています。スタックには、実行中の命令が含まれます。
JVMの場合は、スタックに積み上げられたメソッド呼び出しの、一番上にいるものが現在実行中のメソッドです。実行が完了すると、スタックから取り除かれ、呼び出し元のメソッドが一番上になり、新たに実行中のメソッドとなります。
つまり、メソッドが完了すると、呼び出し元にコンピュータの制御が移るわけです。
スタックトレースは、このスタックに積まれたメソッド呼び出しをリストしたものになります。
スタックが呼び出し順にリストされることで、例外発生にいたる履歴を表しているわけです。
Java 入門 | スタックトレース
なんとなく分かったようなわかんないような・・・
スタックとかヒープとか、そのへんの理解が怪しいからこうなるんだろうな。
基本情報の勉強もかねて復習しよ。