Intellij集成maven引入jar包时scope设置的问题。

java.lang.NoClassDefFoundError: javax/servlet/ServletContext
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2531)
    at java.lang.Class.getDeclaredMethods(Class.java:1855)

很显然,这是没有找到ServletContext类导致的 

Intellij集成maven引入jar包时scope设置的问题。

仔细检查pom文件,发现问题可能出现在一下两个地方:


      org.springframework.boot
      spring-boot-starter-tomcat
      1.2.3.RELEASE
      provided
    
    
      org.apache.tomcat.embed
      tomcat-embed-jasper
      7.0.68
      provided
    

注释掉两个配置中的

provided

问题就这么解决了。

总结

这可能是Intellij的一个bug,在使用spring-boot的时候,如果把某个引入的依赖设置为provided,那么在Intellij使用Application启动时(使用内部tomcat运行项目)就会找不到相应的类。因此,此时需要把此项配置给注释掉,但是打包上线的时候并不需要这些依赖,那么在打包的时候就把注释打开,即可。

参考:https://stackoverflow.com/questions/37938289/spring-boot-java-lang-classnotfoundexception-javax-servlet-servletcontext-and

你可能感兴趣的:(异常)