首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

理解ClassNotFoundException与NoClassDefFoundError区别

上篇文章已经介绍过Java类加载机制,在类加载过程我们最常遇到异常就是: ClassNotFoundException NoClassDefFoundError 但是你知道他们区别吗?...String[] args)throws Exception { Class.forName("oracle.jdbc.driver.OracleDriver"); } } 就会抛出异常ClassNotFoundException...: Exception in thread "main" java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver at...总结: 本文主要对比介绍了ClassNotFoundException与NoClassDefFoundError区别和发生条件,从上面的测试我们可以分析出,直接采用反射或者类加载器loadClass...方法去动态加载一个所有classpath里面的都不存在类,类加载器在运行时load阶段就会直接抛出ClassNotFoundException异常。

8.8K30

JavaClassNotFoundException V.S NoClassDefFoundException 区别

如果在加载类时内存不足,则它可能会静默失败,从而在数据库留下无效类。...稍后,如果您尝试调用或解析任何无效类,则将在运行时引发ClassNotFoundException或NoClassDefFoundException实例。...应该执行以下操作: 验证该类实际上是否包含在您要加载到服务器集合 使用loadjava -force选项来强制要加载新类替换服务器已经驻留类 使用loadjava -resolve选项尝试在加载过程解析类...1ClassNotFoundException ?...当应用程序尝试使用其字符串名称通过其字符串名称加载类时抛出: 类ClassforName方法 类ClassLoaderfindSystemClass方法 类ClassLoaderloadClass

1.2K21
您找到你想要的搜索结果了吗?
是的
没有找到

ClassNotFoundException和NoClassDefFoundError区别

最近看到一个面试题,问ClassNotFoundException和NoClassDefFoundError区别。平时没有专门思考过这个问题,藉此机会分析一下。...ClassNotFoundException 当应用尝试在类路径中用全限量名去加载某个类时,如果找你不到它定义就会报CLassNotFoundException 。它是一个可检测异常。...我们在使用反射时候,要特别注意这个异常。 下面这个例子,我们尝试加载JDBC驱动没有添加到类路径(没有添加依赖),将会报ClassNotFoundException。...他们主要原因是运行时类路径类文件不可用。 下面是几点具体原因: 排查所需jar包是否在类路径,如果没有就添加进去。...如果发现类在classpath里面,很有可能是classpath被重写了,需要再次确定应用准确classpath 依赖包发生了冲突,比如应该依赖高版本jar包,但又其它包传递依赖了低版本jar包,导致高版本某些类找不到

1.5K20

ClassNotFoundException 和 NoClassDefFoundError 区别

今天在看 「极客时间」 《Java 核心技术 36 讲》 又有提到。...ClassNotFoundException 和 NoClassDefFoundError 首先,正如它们名字所说明: NoClassDefFoundError是一个错误(Error),而 ClassNOtFoundException...在Java错误和异常是有区别的:我们可以从异常恢复程序,但却不应该尝试从错误恢复程序。...如果这个类在类路径没有被找到,那么此时就会在运行时抛出 ClassNotFoundException 异常。 要解决这个问题,就要确保所需类连同它依赖包存在于类路径。...解决这个问题办法就是:查找那些在开发期间存在于类路径下但在运行期间却不在类路径下类 二者区别 ClassNotFoundException 发生在装入阶段。

5.6K60

【译】NoClassDefFoundError和ClassNotFoundException不同

NoClassDefFoundError和ClassNotFoundException之间存在一些细微不同点。...另外一方面,ClassNotFoundException和编译期没什么关系,当你在程序运行时利用反射加载类时,就可能遇到ClassNotFoundException异常,例如加载SQL驱动时,对应类加载器找不到驱动类...除了这些基本不同,我们可以看看别的不同,以加深对NoClassDefFoundError和ClassNotFoundException理解。...下找不到对应类而引起,通常是缺少对应jar包,不过,JVM认为:(1)当应用运行时没有找到对应引用,则会抛出java.lang.NoClassDefFoundError;(2)当你在代码显式加载类...如果你在J2EE开发遇到NoClassDefFoundError,那么最有可能原因就是存在多个类加载器和多个目标类,即我们常说Jar包冲突——关于Jar包冲突,一般可以使用下面两种方法解决: 使用

1.3K10

java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError区别

ClassNotFoundException   ClassNotFoundException这个错误,比较常见也好理解。 原因:就是找不到指定class。   ...常见场景就是:   1 调用classforName方法时,找不到指定类   2 ClassLoader findSystemClass() 方法时,找不到指定类   3 ClassLoader... loadClass() 方法时,找不到指定类   开发者平时会有这样一种使用方法,类似JDBC加载驱动!...而如果这个类包含包名,那么按照上面的方法编译,使用时就会报错!...很明显,报错信息中指出了包信息!那么怎么办呢?   在编译时,加上【   -d .   】这样可以把当前目录加入到classpath。 ?   在使用时,加上包名就可以了!

5.2K50

Jar 命令打包 jar包

比如我应用程序用到了Sun Javamail classes ,在classpath我需要包含activation.jar 和 mail.jar,这样在运行程序时,相比上面的例子,我们要增加一些...: java -classpath mail.jar:activation.jar -jar myapplication.jar 在不同操作系统,jar包间分隔符也不一样,在UNIX用“:”,在...: com.example.myapp.MyAppMain Class-Path: mail.jar activation.jar (加入了Class-Path: mail.jar activation.jar...文件名要对特定字符使用逃逸符,比如空格,要表示成" ",在路径表示,都采用“/” 来分隔目录(),无论是在什么操作系统,(即使在window),而且这里用是相对路径(相对于本身JAR文...ClassPath下文件这种方式载入,比如在Spring载入classpath:config.properties,则在MF文件配置文件ClassPath添加“./”,然后将这个配置文件与jar

5.6K30

关于自动发送邮件常见错误解决方法

解决方法: 这里是myeclipse8.6自带javaee.jar里面的mail.jar 和另外引入mail.jar冲突 解决方法是找myeclipse自带jar删除mail.jar和activition.jar...javax.mail和javax.activation这两个包已经在javaEE5当中属于基础包了,就是JDK自带了已经,但是里面的方法与现在外面的mail.jar和activation.jar有一些出入...,所以初学者在直接copy别人代码时候往往会出现上面的错误。...com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806\data\libraryset\EE_5 这个路径里,可以看到javaee.jar,用rar把这个文件打开,然后进到javax文件夹里,删除mail.jar...和activation.jar(我javaee.jar里,这两个东西是文件夹,总之删掉就OK,不过要注意备份一下) 删掉之后运行下面的代码,经行简单修改以后就可以实现接收邮件功能了!

75520

一个一年没解决ClassNotFoundException|类加载机制探索

背景 在一开始写Android时候经常碰到一些ClassNotFoundException,大部分情况下是少导入了什么包导致。...类验证 验证阶段是链接阶段第一步,目的就是确保class文件字节流包含信息符合虚拟机要求,不能危害虚拟机自身安全。...符号引用验证 符号引用通过字符串描述权限定名是否能找到对应类、符号引用类类,字段和方法访问性(private protected public default)是否能被当前类访问。...加载 这个阶段我个人看法,就是在ClassLoader构造函数执行过程。从安卓出发应该就是BaseClassLoader初始化过程把所有.dex文件读入到ClassLoader内存。...结论 首先要多尊重下字节码,因为在插桩过程并没有代码有效性检查情况下,我们没法保证我们插入字节码是一个没有错误代码,特别是在安卓,因为多个.class文件会被打成一个.dex,如果其中有一个

1.9K41

Java Mail---SMTP协议-Java发邮件(带附件)演示过程

需要jar包 mail.jar和activation-1.1.0.jar链接: https://github.com/chenhaoxiang/Java/tree/master/JavaMail...Session对像从Properties获取信息,如IP、协议、用户名密码等。 Javax.mail.Message类,它一个重要子类为MimeMessage....MailSSLSocketFactory-负责SSL加密(如果有邮箱是用ssl加密传输,就需要用到这个类,否则不需要-以前老版本jar包没有此类) 演示用QQ邮箱给网易126邮箱发邮件: 为什么要用...发送有附件邮件 相对于没带附件:用MimeBodyPart来构建体,向体添加内容,附件。最后利用MimeMultipart —addBodyPart(body); 把体加入。...小知识点: 1.必须先启用QQ邮箱里POP3/STMP服务;然后生成授权码 2.导入mail.jar包和activation包 mail.jar和activation-1.1.0.jar链接:

2.1K20

Java Mail(二):JavaMail介绍及发送一封简单邮件

JavaMail是SUN提供给开发人员在应用程序实现邮件发送和接收功能而提供一套标准开发类库,支持常用邮件协议,如SMTP、POP3、IMAP,开发人员使用JavaMail编写邮件程序时...使用JavaMail,我们可以实现类似OutLook、FoxMail软件。虽然JavaMail(仅支持JDK4及以上)也是JavaAPI之一,但是却没有直接加入到JDK,所以我们需要另行下载。...在使用JavaMail时,通常我们只需将mail.jar放在classpath下使用,它包含了JavaMail API部分和SUN自己实现service provider部分。...可能也有特殊时候,我们应用程序需要自己实现service provider部分,那我们只需要mailapi.jar。...由于我们开启了debug调试,在控制台可以看到JavaMail和服务器之间交互信息记录,可以发现,和Java Mail(一):telnet实现发送收取邮件telnet下命令及服务器反馈信息基本一致

1.6K70
领券