Spring Boot 常規錯誤一覽及解決方案

更新信息

2016-03-13 開貼


想法很單純,將自己在Spring Boot學習過程中遇到的各種麻煩列出來,並提供解決方案待查。

正題開始,遇到錯誤可通過報錯信息對號入座:


錯誤提示:java.net.BindException: Address already in use: bind

推測原因:一開始接觸Spring Boot時很常見的錯誤,端口已綁定。之前已啓動Application,Spring Boot會啓動內嵌的Tomcat,並綁定端口8080啓動前端服務。作爲Web應用,程序自己不會終結。而用戶也沒有手動結束程序,該端口就始終被綁定,再次啓動必然會報此問題。

解決方案:打開Windows進程管理器結束javaw.exe,重新運行。並在每次啓動程序前,結束之前的運行。


錯誤提示:Spring Boot Error: java.lang.NoSuchMethodError

推測原因:很顯然,就是找不到指定的方法。

解決方案:仔細搜索報錯信息中的方法名,查看出錯類中是否缺少某方法。筆者此次報錯由於org.springframework.core.ResolvableType.forInstance方法找不到所致,又想起之前在pom.xml中移除了parent依賴,想起是否改文件沒有完整下載。查詢了官網說明:當移除parent依賴時,需要增加spring-boot-dependencies的依賴。因此pom.xml中在<dependencies>前新增以下依賴,問題解決^_^

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>1.3.3.RELEASE</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>


錯誤提示:java -jar myApplication.jar 

系統報錯:Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.

推測原因:根據系統提示,依次尋找報錯源頭,最終定位在EmbeddedServletContainerFactory.class這個文件,原來它缺少了@Bean註解。至少表面上看是這樣,具體原因待高手解釋。

解決方案:在Application.java主程序入口中加入以下代碼:

@Bean
public EmbeddedServletContainerFactory servletContainer() {
      
    TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
    return factory;
      
}






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章