SpringBoot - Unable to Start embedded TomCat

一, 有的是jar包冲突

问题:

servlet-api的jar包和springboot的启动jar包产生冲突

servlet-api.jar

<dependency>
    <groupId>javax.servletgroupId>
    <artifactId>javax.servlet-apiartifactId>
    <version>3.1.0version>
    <scope>providedscope>
dependency>

springBoot启动jar包

<dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-data-jpaartifactId>
    dependency>

解决办法:

把servlet-api的依赖删除,启动正常



二,

使用springboot的时候,通过点击点击Application类中的类方法直接运行的时候一直报以下错误:

找问题的时候,通过这篇文章的:http://stackoverflow.com/questions/21783391/spring-boot-unable-to-start-embeddedwebapplicationcontext-due-to-missing-embedd?rq=1
看到有个老外说在代码中强制声明一个EmbeddedServletContainerFactory,代码如下:

[java]  view plain  copy
  1. @Bean  
  2. public EmbeddedServletContainerFactory servletContainer() {  
  3.     TomcatEmbeddedServletContainerFactory factory =   
  4.                   new TomcatEmbeddedServletContainerFactory();  
  5.     return factory;  
  6.  }  
强制声明之后,就报错说jetty所需jdk版本不对,顿时茅塞顿开。因为工程中默认使用的jetty版本是9.3的版本,而这个的jetty版本是需要jdk1.8的,我本机是1.7。问题原因找到了,解决办法也就有了
第一个办法:降低springboot的版本
第二个办法:强制声明jetty的版本为本机jdk适配的,如我本机jdk为1.7,那我强制声明jett的版本为:
[html]  view plain  copy
  1. <jetty.version>9.2.17.v20160517jetty.version>  
第三个办法:把自己本机的jdk升级到1.8吧。
花了几个小时,哎。最后吐槽下,报错信息能不能精确点呢。




三,

电脑上面的QQ采用的是随机端口号,我的项目采用的是8082,QQ升级后随机分配端口,而我的项目当时没有启动,所以QQ占用了8082端口,导致项目不能启动。 
解决办法很简单 退出QQ 然后先启动项目占用端口,重新登录QQ的时候,8082占用时它会重新分配端口。 


你可能感兴趣的:(spring-boot)