您的位置:首页 > 其它

ClassNotFoundException

2015-08-25 15:33 309 查看
<span style="font-family: 'Comic Sans MS', 微软雅黑; background-color: rgb(255, 255, 255);">ClassNotFoundException这个错误,比较常见也好理解。</span>


  原因:就是找不到指定的class。

  常见的场景就是:

  1 调用class的forName方法时,找不到指定的类

  2 ClassLoader 中的 findSystemClass() 方法时,找不到指定的类

  3 ClassLoader 中的 loadClass() 方法时,找不到指定的类

  开发者平时会有这样一种使用方法,类似JDBC加载驱动

package test321;

public class test {
public static void main(String[] args) {
try {
Class.forName("test321.hello");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}


 此时,程序会到当前的目录中寻找指定位置test321.hello这个class。

  并且这个类也是可以正常执行的。

  但是,我们修改一下加载的类名,这样显然是找不到指定的类的。
package test321;

public class test {
public static void main(String[] args) {
try {
Class.forName("test321.hello1");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
此时就会报错!

报错!
java.lang.ClassNotFoundException: test321.hello1
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at test321.test.main(test.java:6)


原因就是找不到指定的string对应的class文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: