我的编程空间,编程开发者的网络收藏夹
学习永远不晚

IDEA单元测试报错:Classnotfound:xxxxspringboot的解决

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

IDEA单元测试报错:Classnotfound:xxxxspringboot的解决

IDEA单元测试报错:Class not found:xxxx springboot

报错

引入了新依赖,想着在测试模块进行测试。

结果报错说

Class not found:xxxx

说找不到这个类。

解决

把安装了新依赖的父工程 重新 install一下 再进行测试。

测试通过

maven 更新 install

让人抓狂的ClassNotFoundException

我们的项目基于Spring Boot + Maven,采用Intelli IDEA工具进行开发。代码在另一名同事的机器上检出之后,

启动项目时,始终出现如下错误提示

03-11 15:41:23[org.springframework.boot.SpringApplication-825][main][13298] - Application startup failed
java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletResponse
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.getDeclaredMethods(Class.java:1975)
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:609)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:521)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:507)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:241)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1069)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1042)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:764)
at org.springframework.boot.SpringApplication.doRun(SpringApplication.java:357)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:305)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1124)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1113)
at cn.com.icaifeng.Application.main(Application.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletResponse
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 29 more

开始怀疑是JDK或JRE设置的问题,但项目完全可以编译成功,所以此点可以排除。从错误信息:<code> javax/servlet/http/HttpServletResponse</code>可以看是Servlet的问题,Sevlet是java的web server一个容器,那么是不是表示这个容器类无法加载进行初始化?利用bing及百度做了一些查找(不要问为什么不用google),并未找到解决方案。

折腾了三个小时之后,最终放弃了直接解决这个问题。让同事重新安装了Intell IDEA,并重新下载代码进行编译运行,居然一切正常,真让人想哭又想笑!自己内心松了一口气,虽然并未找到真正的原因,但终究这个问题消失了。

“欠下的债,终究要还的!”在没过两日的今天,在自己的机器居然也出现了这种问题,折腾近一个小时仍旧没有找到原因与解决办法,真是有点让人奔溃,有点想放弃了。

但转念一想,如果今日放弃,想必日后肯定还会再次遇到,何不今日多花点时间,彻底弄清这个问题,找出原因与解决方案。

没有了内心的烦躁与焦虑,自己反而能够静心地把错误的信息想了又想,推测各种可能的原因。加上之前的种种尝试的失败,基本断定是web server容器的问题。

上网查了一些资料,发现如果容器出现问题,确实会报此种错误。项目使用了spring boot的内嵌tomcat作为web server,那么很有可能是这个容器出现了问题。

虽然Maven也加载了spring boot的tomcat包,但是不是这个包损坏或存在问题。

在项目的pom文件,添加了以下代码


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>1.5.2.RELEASE</version>
</dependency>

更新了Maven的依赖包,重新编译运行,奇迹发生了,一切OK,内心真是有点小激动!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

IDEA单元测试报错:Classnotfound:xxxxspringboot的解决

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何解决IDEA的junit单元测试Scanner输入不可用的问题

这篇文章给大家分享的是有关如何解决IDEA的junit单元测试Scanner输入不可用的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。这是IDEA的单元测试的默认设置问题eclipse默认可用解决方法:修改I
2023-06-15

Golang 单元测试的简单错误问题

Golang单元测试是保证代码质量和功能正确性的重要手段,但在实践中,我们常常会遇到一些简单的错误问题。在本文中,php小编子墨将为大家介绍一些常见的错误问题,以及如何解决它们。通过学习这些问题的解决方法,相信大家在进行Golang单元测试
Golang 单元测试的简单错误问题
2024-02-13

golang函数错误处理中的单元测试

单元测试 go 语言中的函数错误处理方法包括:创建模拟输入:创建受控错误的模拟对象。断言错误消息:匹配返回的错误消息与预期的消息。覆盖错误情况:编写针对所有可能错误情况的测试用例。Go 语言函数错误处理中的单元测试背景在 Go 语言中,
golang函数错误处理中的单元测试
2024-05-01

PHP 单元测试与错误处理的实践

单元测试可通过 phpunit 框架轻松快速地测试代码,错误处理则利用异常捕获和处理运行时错误。异常处理采用 try...catch 语句捕获异常,而错误报告通过 error_reporting() 配置错误类型并使用 trigger_er
PHP 单元测试与错误处理的实践
2024-05-07

解码 Java JUnit:破解单元测试的秘密

掌握 Java JUnit 单元测试框架的精髓,揭秘其强大功能,提升代码质量,确保软件可靠性。
解码 Java JUnit:破解单元测试的秘密
2024-02-16

spring单元测试重复加载问题怎么解决

在Spring单元测试中,可能会遇到重复加载的问题,即同一个bean被加载了多次。这可能会导致测试结果不准确或出现其他异常。以下是一些解决重复加载问题的方法:1. 使用@DirtiesContext注解:在每个测试方法或测试类上使用@Dir
2023-08-31

Go 函数单元测试的错误处理策略

在 go 函数单元测试中,错误处理有两种主要策略:1. 将错误表示为 error 类型的具体值,用于断言预期值;2. 使用通道向测试函数传递错误,适用于测试并发代码。实战案例中,使用错误值策略确保函数对负数输入返回 0。Go 函数单元测试的
Go 函数单元测试的错误处理策略
2024-05-02

SpringBoot单元测试java.lang.IllegalStateException Could not initialize plugin: interface org.mockito解决方案

  大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作
SpringBoot单元测试java.lang.IllegalStateException Could not initialize plugin: interface org.mockito解决方案
2023-12-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录