【问题解决】-《java.lang.NoClassDefFoundException》
此问题相比与ClassNotFoundException,不容易找到,当然这两者都属于jvm加载类时的错误。导致
NoClassDefFoundException的原因:编译时不报错,运行时在内存中找不到该类的对象。也正是这个原因,导
致不好找到,深层次的原因我们得分析jvm加载机制,这个我会在下篇文章中发表个人愚见,这里我们就描述一
些我们实际开发中,由于我们的哪些疏忽导致此问题出现。看到网上好多出现此类问题,如:静态变量初始化找
不到指定文件;代码顺序问题,但我这边写了测试类均没有复现,所以此处不做说明,等遇到后再更新文档。
场景:我们明明下载了三方jar,然后加入到构建路径,然后重新编译后,也不报错。但为何运行的时候,
就是提示NoClassDefFoundException这个错误。其根本原因就是:引入的jar包没有在当前jar文件的
manifest文件中的classpath属性中定义!!!
add by weipt 20190713 还有一种情况就是,当前引入的包,没有在Import_Pachage标签下注册
这个根据我们实际框架来看,就拿OSGI举例:其MANIFEST.MF文件中Bundle-ClassPath属性,需要我们
在引入三方jar包后,在此文件中添加,有的ide会自动添加。没有的话我们就需要手动添加。
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Weipt_TEST
Bundle-SymbolicName: Weipt_TEST;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-ClassPath: .,
lib/dom4j-1.6.1.jar,
lib/org.jdom_1.0.0.v200806100616.jar,
lib/jsch-0.1.55.jar
Bundle-Activator: com.dcfs.queue.app.Activator
Junit-Test: com.dcfs.teller.common.test.MainTest
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
欢迎指正或者补充,您的建议是我们共同进步的阶梯
【问题解决】-《java.lang.NoClassDefFoundException》的更多相关文章
- 19.java.lang.NoClassDefFoundException
java.lang.NoClassDefFoundException未找到类定义错误 当Java虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误. 违背安全原则异常:Secturit ...
- 问题解决java.lang.IllegalArgumentException at org.springframework.asm.ClassReader
手上拿到一个老的项目,使用的是spring3.2,启动的时候报错了: 查了一下,发现spring3.2不兼容jdk8,只能使用jdk8以下的版本,使用jdk6可以启动,但是maven构建的时候又提示不 ...
- java.lang.IllegalStateException: getWriter() has already been called for this response问题解决
java.lang.IllegalStateException: getWriter() has already been called for this response问题解决 java.lang ...
- Spring 4.0 StandaloneMockMvcBuilder java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfig 问题解决
standaloneSetup(clrr). build(); 执行第二行 build() 时,出现下面的错误提示. java.lang.NoClassDefFoundError: javax/ser ...
- "java.lang.IllegalStateException: No instrumentation registered! Must run under a registering instrumentation."问题解决
问题描述 运行uiautomator,报错"java.lang.IllegalStateException: No instrumentation registered! Must run ...
- ambari-server启动出现ERROR main] DBAccessorImpl:106 - Error while creating database accessor java.lang.ClassNotFoundException:com.mysql.jdbc.Driver问题解决办法(图文详解)
不多说,直接上干货! 问题详情 ambari-server启动时,报如下的错误 问题分析 注:启动ambari访问前,请确保mysql驱动已经放置在/usr/share/Java内且名字是mysql- ...
- java.lang.NoClassDefFoundError: javax/el/ELResolver 问题解决
HTTP Status 500 - java.lang.NoClassDefFoundError: javax/el/ELResolver type Exception report message ...
- 无法找到类:java.lang.ClassNotFoundException: com.tt.javaweb.HttpServletRequest问题解决
问题如下:找不到Httpservlet对应的Class,进入build目录下发现确实没有对应的class文件. 严重: Allocate exception for HttpServletReques ...
- weblogic java.lang.OutOfMemoryError: PermGen space 问题解决方法
文章转自:http://blog.csdn.net/cuihaiyang/article/details/6679735 最近安装了WebLogic10.3.4,测试在weblogic上部署项目,没过 ...
随机推荐
- flutter 入门(Mac)
背景 近一年时间都在用 React Native 开发公司的 APP,水平基本上可以说是登堂入室了.前一段时间兴起一阵 Flutter 热,后端的同事都有推荐,今年 Google 大会又推出 flut ...
- Ⅱ:python入门
一.编程语言介绍 编程语言的分类: 机器语言 汇编语言 高级语言(编译型.解释型号) 总结: 执行效率:机器语言>汇编语言>高级语言(编译型>解释型) 开发效率:机器语言<汇编 ...
- PHP时区转换(默认中国时区<Asia/Shanghai>转意大利时区<Europe/Rome>)
<?php function changeTimeZone($date_time, $format = 'Y-m-d H:i:s', $to = 'Europe/Rome', $from = ' ...
- 使用IDEA创建Maven整合SSM
创建数据库 CREATE DATABASE `ssmbuild`; USE `ssmbuild`; DROP TABLE IF EXISTS `books`; CREATE TABLE `books` ...
- Spring 事务传播机制和数据库的事务隔离级别
Propagation(事务传播属性) 类别 传播类型 说明 支持当前事务 REQUIRED 如果当前没有事务,就新建一个事务.@Transaction的默认选择 支持当前事务 SUPPORTS 就以 ...
- 微信小程序学习 动手撸一个校园网小程序
动手撸一个校园网微信小程序 高考完毕,想必广大学子和家长们都在忙着查询各所高校的信息,刚好上手微信小程序,当练手也当为自己的学校做点宣传,便当即撸了一个校园网微信小程序. 效果预览 源码地址:Gith ...
- Windows环境下docker的安装与配置
Docker是一种容器技术,可以在操作系统中隔离出若干个独立的程序运行环境,这些环境既可以共享宿主机的资源,另一方面他们之间相互独立,互不影响,也不会对宿主机的环境产生影响.与虚拟化技术不同的是,Do ...
- 第一个Hystrix程序 Hystrix 一
1.导入jar包 <dependencies> <dependency> <groupId>com.netflix.hystrix</groupId> ...
- 使用 Github Action 进行前端自动化发布
前言 说起自动化,无论是在公司还是我们个人的项目中,都会用到或者编写一些工具来帮助我们去处理琐碎重复的工作,以节约时间提升效率,尤其是我们做前端开发会涉及诸如构建.部署.单元测试等这些开发工作流中重复 ...
- eslint常用三种校验语句
1.关闭对整段代码的校验 /* eslint-disable */ code /* eslint-enable */ 2.关闭当前行代码的校验 line code // eslint-disable- ...