Intellij Idea下运行Spring Boot关于provided依赖不加入classpath的bug与解决方案

来源:互联网 发布:百度4字优化 编辑:程序博客网 时间:2024/06/16 19:29

idea 启动项目的时候报错(Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean),主要是以下的依赖   

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>${springboot-version}</version>
<scope>provided</scope>
</dependency>
由于打包是不需要tomcat的,所以这里把tomcat的依赖改为provided,那么问题来了,由于idea存在一个bug,就是provided的pom不会加入classpath中,所以运行的时候就找不到tomcat相关的包,


在 Intellij Idea 16 中使用maven时,所有 scope 为 provided 的依赖都是不会被加入到 classpath 中的,目前该bug尚未被修复(bug report)。如果你的web应用是部署到容器中的,那么这个bug不会影响使用,因为web应用中provided的依赖在容器运行时会被提供。如果你做spring Boot开发,有带provided的依赖时,直接在IDE中运行项目会导致ClassNotFound异常。解决方案有二:

  • 使用spring-boot:run这个 maven goal 运行程序。但这样会失去 Idea 的 debug功能,不推荐。
  • 点击IDE右侧的Maven Projects, 找到spring-boot:run,右键选择 debug 运行,如图: 
    这里写图片描述
    这种方式 ide 的 debug 功能就能正常使用了。
阅读全文
0 0
原创粉丝点击