【Intellij idea】Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/Filter

Spring Boot项目在eclipse能够启动,但是当你忍受不了eclipse或sts的慢时,

激情澎湃的将项目用Intellij idea启动时,或许你会遇到这个磨人的小妖精:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/Filter

......

是不是很纳闷,为什么eclipse跑得好好的,挪到Intellij idea启动就失败了?

从错误我们可以看到缺少Filter类,而Filter类在Servlet-api.jar中,

但是Spring Boot项目并没有显示的去引用Servlet-api.jar,

因为用Spring Boot时默认集成了tomcat,而在tomcat中默认是有Servlet-api.jar的,

既然没有Servlet-api.jar,网上有人说,显示的在pom.xml中引入Servlet-api.jar,

其实不合逻辑,你想想一个在eclipse能启动的项目,换了个集成工具,

你就要加jar包,是谁给你的胆子,难道就不怕出问题吗?

 

其实出现这个问题的原因就是Intellij idea配置问题,先上一个图:

File--->Project Structure--->Modules-->Dependencis

【Intellij idea】Exception in thread

有没有发现,这几个含有tomcat字眼的东西,对应的Scope范围是Provided,

表示的是这几个包在开发时使用,但是我们现在要启动项目,当然使用范围就不能是Provided。

聪明的你已经想到了解决办法,就是把Scope范围改为Compile即可。如图:

【Intellij idea】Exception in thread

都选成Compile,然后点击Apply-->OK,然后去启动你的项目,

如果启动了,是不是有一种久违的感觉和想大声的说一声"fuck"。

 

总结:

如果从eclipse转为使用Intellij idea,刚开始会有很多的不适,不过慢慢就习惯了!

然后你就会慢慢体会到它的好!

 

你可能感兴趣的:(#,--IDEA)