maven 多模块依赖报 java.lang.NoClassDefFoundError
2017-05-09 09:55
2051 查看
现象:
web 工程启动报错:Caused by: java.lang.NoClassDefFoundError: com/fafree/entity/SysUser
报错原因分析:
对应模块的 jar 包没有被打包到 web 工程的 lib 目录下验证方式:
直接把当前项目加载到 tomcat 下面启动,然后在 tomcat 中选择当前项目点击鼠标右键->Browse Deployment Location打开项目下的 WEB-INF/lib 目录,查看当前目录下的 jar 包文件,有没有报错类所在的 jar 包,正常情况下是不会有的。
解决办法:
仔细查看一下无法被加载进来的 jar 包所在模块,里面是不是有 test 模块,把 项目下的/src/test/java目录以及 /src/main/test目录从项目的 Java Build Path的 Source 选下卡下移除,然后把项目整体的 Clean 一下,重新打包运行。导致问题的原因:
经过参考一些Maven的资料得知,其工作机制实际上是包的依赖管理。在规定的标准目录下,能够在模块之间引用的代码只能存在于main目录下。而单元测试(test目录下的代码)模型是建立在“独立”的思想之上的,目的就是不受其他环境的干扰从而纯粹地验证自身模块的可用性和正确性。因此单元测试代码之间是不能被其他模块引用的。
将其他模块的单元测试代码解除src/test/java级引用后,项目成功build。
虽然其他模块引用的并不是别的模块下的 test 目录下的类,但是这种方式可能会导致同样的问题出现。
相关文章推荐
- 大型JavaWeb分布式系统中关于maven多模块构建以及代码依赖管理
- maven依赖贼怪一问题--java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
- maven多模块项目:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
- IDEA中maven添加了依赖也报错java.lang.NoClassDefFoundError解决
- maven 工程依赖了某个jar包 但还是报java.lang.ClassNotFoundException的问题
- tomcat启动maven依赖项目报错:java.lang.ClassNotFoundException: com.test.core.listener.ContextParameterLi
- maven依赖设置版本号的坑:java.lang.NoSuchMethodError: No static method stringToValue(Ljava/lang/String;)Ljava/
- idea上使用maven分模块开发时解决spring注入失败问题java.lang.IllegalStateException: Failed to load ApplicationContext
- maven依赖设置版本号的坑:java.lang.NoSuchMethodError: No static method stringToValue(Ljava/lang/String;)Ljava/
- 大型JavaWeb分布式系统中关于maven多模块构建以及代码依赖管理
- 使用maven管理依赖,spring版本冲突解决 java.lang.NoSuchMethodError: org.springframework.core.GenericTypeResolver.r
- maven 项目出现 java.lang.ClassNotFoundException: or...
- 使用 maven 插件 maven-shade-plugin 对可执行 java 工程及其全部依赖 jar 进行打包
- Maven--多模块依赖实例解析(五)
- 记录maven java.lang.String cannot be cast to XX error
- maven项目 报:java.lang.ClassNotFoundException: org.springframework.web.context...
- Maven java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
- Tomcat发布Maven项目遇到异常:java.lang.OutOfMemoryError: PermGen space
- Java Server Faces的maven依赖
- java学习之路-----项目经验----关于maven项目之间的互相依赖