1. 程式人生 > >Unable to Start embedded TomCat

Unable to Start embedded TomCat

一, 有的是jar包衝突

問題:

servlet-api的jar包和springboot的啟動jar包產生衝突

servlet-api.jar

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

springBoot啟動jar包

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

解決辦法:

把servlet-api的依賴刪除,啟動正常


二,

使用springboot的時候,通過點選點選Application類中的類方法直接執行的時候一直報以下錯誤:

找問題的時候,通過這篇文章的:http://stackoverflow.com/questions/21783391/spring-boot-unable-to-start-embeddedwebapplicationcontext-due-to-missing-embedd?rq=1


看到有個老外說在程式碼中強制宣告一個EmbeddedServletContainerFactory,程式碼如下:

  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的版本為:
  1. <jetty.version>9.2.17.v20160517</jetty.version>
第三個辦法:把自己本機的jdk升級到1.8吧。
花了幾個小時,哎。最後吐槽下,報錯資訊能不能精確點呢。

三,

電腦上面的QQ採用的是隨機埠號,我的專案採用的是8082,QQ升級後隨機分配埠,而我的專案當時沒有啟動,所以QQ佔用了8082埠,導致專案不能啟動。 
解決辦法很簡單 退出QQ 然後先啟動專案佔用埠,重新登入QQ的時候,8082佔用時它會重新分配埠。