ClassNotFoundException报错

  • 具体问题
  • 报错详情
  • 推测可能是jar包问题
  • 问题总结自定义依赖缺少依赖jar

具体问题

Caused by: java.lang.NoClassDefFoundError: retrofit2/converter/simplexml/SimpleXmlConverterFactory

报错详情

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: retrofit2/Retrofit$Builderat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1006)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:877)at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)...

java.lang.NoClassDefFoundError: retrofit2/Retrofit$Builder
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1006)

推测可能是jar包问题

Retrofit是一个自定义jar包中的pom依赖(jar包被引入到项目中依赖)。

<dependency><groupId>com.squareup.retrofit2</groupId><artifactId>retrofit</artifactId><version>2.5.0</version></dependency>

打开terminal,定位到工程pom.xml所在的目录,执行 mvn dependency:tree 打印maven依赖关系树 。

mvn dependency:tree

如果你的操作系统环境定义了多个本地maven repo的配置,则需要在后面带上你的setttings.xml配置。
例如:

mvn dependency:tree -settings C:\Users\z00402970\2.0_iocm\settings.xml

打印结果:

[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< net.ering.van:van-share >-----------------------
[INFO] Building van-lte-boot 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:3.0.2:tree (default-cli) @ van-share ---
[INFO] net.ering.van:van-share:jar:0.0.1-SNAPSHOT
[INFO] +- org.testng:testng:jar:6.9.10:test
[INFO] |  +- com.beust:jcommander:jar:1.48:test
[INFO] |  \- org.beanshell:bsh:jar:2.0b4:test
[INFO] +- org.mockito:mockito-all:jar:1.10.19:test
[INFO] +- org.springframework.boot:spring-boot-starter-test:jar:2.0.4.RELEASE:test
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:2.0.4.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-starter-logging:jar:2.0.4.RELEASE:compile
[INFO] |  |  |  +- ch.qos.logback:logback-classic:jar:1.2.3:compile
[INFO] |  |  |  |  \- ch.qos.logback:logback-core:jar:1.2.3:compile
[INFO] |  |  |  +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.10.0:compile
[INFO] |  |  |  |  \- org.apache.logging.log4j:log4j-api:jar:2.10.0:compile
...
[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:provided
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.321 s
[INFO] Finished at: 2020-10-14T15:28:11+08:00
[INFO] ------------------------------------------------------------------------

打印结果中检索servlet

[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:provided

发现其他的基本都是compile,而servlet是provided结尾,是项目pom中加上了scope限制

<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>${servlet-version}</version><scope>provided</scope></dependency>

回到报错信息第一行,鼠标点击显示如下:

说明tomcat中也有servlet-api包,provided可以避免发生冲突。
因为provided表示该包只在编译和测试的时候用,所以,当启动tomcat的时候,tomcat中的servlet-api就不会和javax.servert的依赖冲突了。
这个provided的只在编译和测试期有效,已提供范围的依赖在编译classpath 可用,运行时不可用。并且不被传递。

问题总结自定义依赖缺少依赖jar

最后发现是引入的自定义依赖的源码缺少了Retrofit的依赖的引入。

java.lang.ClassNotFoundException: retrofit2.Retrofit$Builder解决思路相关推荐

  1. storm和kafka集成报java.lang.ClassNotFoundException: kafka.api.OffsetRequest解决方法

    添加依赖 <dependency><groupId>org.apache.storm</groupId><artifactId>storm-kafka& ...

  2. Spark:Caused by: java.lang.ClassNotFoundException: scala.Product$class解决

    今天使用Spark进行RDD操作,当我开始运行程序时,出现Caused by: java.lang.ClassNotFoundException: scala.Product$class, 我最后检查 ...

  3. java.lang.ClassNotFoundException: okio.ForwardingTimeout 已解决

    这个问题发现是由于版本问题引起的,下面是我用的两个jar源码对比: 先看看okio-1.13.0.jar的,会发现在forwardingSource下面有ForwardingTimeout这个类 下面 ...

  4. Android <java.lang.ClassNotFoundException:Didn‘t find class ‘XXX‘ on path:DexPathList> 解决

    Android <java.lang.ClassNotFoundException:Didn't find class 'XXX' on path:DexPathList> 解决 如图:问 ...

  5. java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 解决方法 java.lang.ClassNotFoundException: com.

    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 解决方法 java.lang.ClassNotFoundException: com.m ...

  6. IDEA里运行代码时出现Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger的解决办法(图文详解)...

    问题详情 运行出现log4j的问题 "C:\Program Files\Java\jdk1.8.0_66\bin\java" -Didea.launcher.port=7533 & ...

  7. java.lang.classnotfoundexception解决方法

    java.lang.classnotfoundexception解决方法 参考文章: (1)java.lang.classnotfoundexception解决方法 (2)https://www.cn ...

  8. Idea运行web项目时,提示java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方法

    Idea运行web项目时,提示java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方法 参考文章: (1)Idea运行web项目时,提示j ...

  9. jsp项目中连接数据库解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的问题

    jsp项目中连接数据库解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的问题 参考文章: (1)jsp项目中连接数据库解决java.l ...

最新文章

  1. 单片微型计算机系统应用和开发特点,单片微机原理及应用 徐春辉 电子工业出版社习题答案.doc...
  2. C# 循环语句 for循环
  3. 中国SaaS死或生之七:死生非大事,利益最相关
  4. IDEA开发工具的学习
  5. mysql mycat docker_docker-mycat-mysql
  6. centos7.2 部署k8s集群
  7. 按键精灵post教程_安卓按键精灵教程VIP按键精灵辅助post视频教程大漠插件编程实战...
  8. 几种常用的PID控制算法
  9. Mysql 当前月每天累计统计,Mysql 本月第一天
  10. 计算机字的符号,特殊符号图案大全
  11. 一张图告诉你三大运营商2G/3G/4G频率分配和网络制式
  12. 中国互联网公司如何进军海外,先行者六点血泪教训
  13. 佛祖保佑 永无shell
  14. 好看的css下拉框样式,实用的漂亮的下拉框-CUSTOM DROP-DOWN LIST STYLING
  15. 网络天才网页中文版_akinator官方版下载_akinator中文版在线玩-网络天才中文版下载网页版 - Win7旗舰版...
  16. java框架013——Spring AOP面向切面编程
  17. 关于线性回归和逻辑回归一些深入的思考
  18. 老李分享:robotium常用API 1
  19. 学计算机有名学校有哪些,计算机学校哪所有名?
  20. 关于vim gf问题

热门文章

  1. [3/21]Windows Server 2008时钟方面的改进展示
  2. JavaScript基础之Number对象和Math对象
  3. xib中UIScrollView固定底部内容
  4. 【Microsoft Azure学习之旅】测试消息队列(Service Bus Queue)是否会丢消息
  5. scoket多线程例子
  6. 关于ORA-01187: cannot read from file because it failed verification tests 的处理方法
  7. Oracle SQL语句执行步骤
  8. 多媒体融合通信平台促进公网和专网的互联互通
  9. python图形界面编程库_Python支持哪些图形界面的第三方库
  10. Java并发编程之线程池ThreadPoolExecutor解析