- 浏览: 178630 次
- 性别:
- 来自: 上海
文章分类
最新评论
首先从名字上可以看出一类是异常,一类属于错误。异常可以通过异常处理机制使程序继续运行,但出现错误必然找出程序崩溃。
这个问题是和java 类的加载相关的。类加载的时候先要把编译好的类文件(.class ,jar包等)加载JVM管理的方法区当中,这个过程叫做加载,如果这个过程中没找类文件就会出现ClassNotFoundException。如果加载成功之后,会有一个该类的类对象(class对象)。想方法类,就通过这个类对象,当在内存当中没有找到这个类对象,就会出现NotClassDefFoundError。
1.ClassNotFoundException:
这类异常出现在对类进行加载时,该路径下找不到对应的class文件。有以下情况:
1.通过Class.forName()加载类。
2.通过类加载器ClassLoader加载loadClass(),或者findSystemClass()。
如下代码:
[java] view plain copy
在CODE上查看代码片派生到我的代码片
package abs;
[java] view plain copy
在CODE上查看代码片派生到我的代码片
public class Main {
public static void main(String arg[]) throws Exception {
Class.forName("Main");
}
}
就会出现:
Exception in thread "main" java.lang.ClassNotFoundException: Main
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at abs.Main.main(Main.java:18)
这是因为在加载类的时候找不到Mian.class文件(在使用forName()加载类时需要加上包名)。将加载类的代码改成Class.forName("abs.Main")就不会发生异常了。
2.NotClassDefFoundError:
这类错误发生在运行时,通常是编译通过,但当运行时使用new参数该类对象时,找不到类的定义造成,此异常通常是由于一个类中引用了另外的一个类,而被引用的类没有被classLoader找到。如在编译好Person类后删除person.class时再运行。
[java] view plain copy
在CODE上查看代码片派生到我的代码片
public class Main {
public static void main(String arg[]) throws Exception {
Person p=new Person("xjp",20);
System.out.println(p.getName());
}
}
就会出现
Exception in thread "main" java.lang.NoClassDefFoundError: abs/Person
这个问题是和java 类的加载相关的。类加载的时候先要把编译好的类文件(.class ,jar包等)加载JVM管理的方法区当中,这个过程叫做加载,如果这个过程中没找类文件就会出现ClassNotFoundException。如果加载成功之后,会有一个该类的类对象(class对象)。想方法类,就通过这个类对象,当在内存当中没有找到这个类对象,就会出现NotClassDefFoundError。
1.ClassNotFoundException:
这类异常出现在对类进行加载时,该路径下找不到对应的class文件。有以下情况:
1.通过Class.forName()加载类。
2.通过类加载器ClassLoader加载loadClass(),或者findSystemClass()。
如下代码:
[java] view plain copy
在CODE上查看代码片派生到我的代码片
package abs;
[java] view plain copy
在CODE上查看代码片派生到我的代码片
public class Main {
public static void main(String arg[]) throws Exception {
Class.forName("Main");
}
}
就会出现:
Exception in thread "main" java.lang.ClassNotFoundException: Main
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at abs.Main.main(Main.java:18)
这是因为在加载类的时候找不到Mian.class文件(在使用forName()加载类时需要加上包名)。将加载类的代码改成Class.forName("abs.Main")就不会发生异常了。
2.NotClassDefFoundError:
这类错误发生在运行时,通常是编译通过,但当运行时使用new参数该类对象时,找不到类的定义造成,此异常通常是由于一个类中引用了另外的一个类,而被引用的类没有被classLoader找到。如在编译好Person类后删除person.class时再运行。
[java] view plain copy
在CODE上查看代码片派生到我的代码片
public class Main {
public static void main(String arg[]) throws Exception {
Person p=new Person("xjp",20);
System.out.println(p.getName());
}
}
就会出现
Exception in thread "main" java.lang.NoClassDefFoundError: abs/Person
发表评论
-
ReentrantLock与Condition
2017-03-17 14:25 477多线程和并发性并不是什么新内容,但是 Java 语言设计中的创 ... -
java linux监控
2017-03-13 17:49 420http://agapple.iteye.com/blog/1 ... -
transient和volatile两个关键字
2017-02-16 09:47 526transient和volatile两个关 ... -
java 锁机制
2016-12-09 13:43 428一段synchronized的代码被 ... -
java 正则表达式
2016-12-02 10:28 482众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字 ... -
ThreadLocal
2016-07-19 11:10 303ThreadLocal是什么 Thre ... -
java CAS
2016-07-10 14:55 287cas 乐观锁每次不锁定整个线程,在操作之前进行判断。悲观锁独 ... -
concurrenthashmap
2016-07-10 11:11 391hash table虽然性能上不如 ... -
java 线程池的使用
2016-07-10 09:52 3411. 引言 合理利用线程池能够带来三个好处。第一:降低资源消 ... -
java.util.concurrent
2016-07-03 16:24 378我们都知道,在JDK1.5之 ... -
JVM 配置 以及垃圾收集器的选择
2016-04-15 12:36 700JVM监控的关键指标说明: a) FGC的环比增加次数。Zab ... -
jvm实时监控工具
2016-04-09 09:35 415 -
哈希 、一致性哈希、余数式哈希
2016-04-07 16:10 824什么是Hash Hash,一 ... -
jvm dump 相关
2016-03-22 17:22 643http://www.cnblogs.com/edwardla ... -
深入剖析volatile关键字
2016-03-21 16:02 475深入剖析volatile关键字 ... -
java线程安全问题之静态变量、实例变量、局部变量
2016-03-08 12:52 533java多线程编程中,存在很多线程安全问题,至于什么是线程安全 ... -
有状态的bean和无状态的bean的区别
2016-03-08 11:23 1426有状态会话bean :每个用户有自己特有的一个实例,在用户的生 ... -
Java nio详解
2016-01-20 16:30 510http://www.ibm.com/developerwor ... -
java 不定长数组
2015-11-24 15:00 724在调用某个方法时,若是方法的参数个数事先无法确定该如何处理 ... -
Java stack and heap dump
2015-11-14 16:13 1013对于大型 java 应用程序来说,再精细的测试都难以堵住所有的 ...
相关推荐
java 9 中引入了模块的概念,默认情况下,Java SE中将不再包含java EE 的Jar包 而在 java 6/7 / 8 时关于这个API 都是捆绑在
"java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver" 解决方案 [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket. 解决了jsp连接 sql server 2000的问题
JSON转化时出现 java.lang.ClassNotFoundException: net.sf.ezmorph.MorpherRegistry
java 找不到指定类时发生的异常(ClassNotFoundException) java 找不到指定类时发生的异常(ClassNotFoundException)
整个系统都没有错误,但是在发布运行后,控制台上却抛出了这样的异常: java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource
Caused by: java.lang.ClassNotFoundException: com.sun.org.apache.xml.internal.resolver.CatalogManager at java.net.URLClassLoader.findClass(URLClassLoader.java:434) at ...
NULL 博文链接:https://redarmychen.iteye.com/blog/463864
struts初学者的数据池配置出现java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource异常的解决办法
NULL 博文链接:https://chimpp55.iteye.com/blog/2344330
主要介绍了Android Caused by: java.lang.ClassNotFoundException解决办法的相关资料,需要的朋友可以参考下
ClassNotFoundException终极解决办法 完美解决ClassNotFoundException,jar包在线查找库,在线下载库
深入浅出Java_Swing程序设计(高清),第二部分,分卷压缩 Swing开发入门经典教材
主要介绍了Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
类加载器是 Java 语言的一个创新,也是 ...不过如果遇到了需要与类加载器进行交互的情况,而对类加载器的机制又不是很了解的话,就很容易花大量的时间去调试 ClassNotFoundException和 NoClassDefFoundError等异常。
文章目录: Java异常架构与异常关键字 Java异常简介 Java异常架构 1. Throwable 2. Error(错误) ...6. NoClassDefFoundError 和 ClassNotFoundException 区别? 7. try-catch-finally 中哪个部分可以省略?
Java_Spring与Quartz的整合
一:查看你下载的MySQL和mysql-connector-java,如果不对应的话肯定会报错。 对应规则: mysql-connector-java-5 Connector/J version Driver Type JDBC version MySQL Server version Status 5.1 4 3.0, 4.0...
Caused by: java.sql.SQLException: java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver at com.trs.gateway.commons.hive.HiveFeature.getConnection(HiveFeature.java:57) at ...