spring項目報錯集錦

目錄

1、springboot啓動報錯start bean 'eurekaAutoServiceRegistration' NullPointerException

2、項目啓動端口衝突

 

 

1、springboot啓動報錯start bean 'eurekaAutoServiceRegistration' NullPointerException

原因:兩種,第一種:

   是關閉ApplicationContext時,它將銷燬所有單例bean,eurekaAutoServiceRegistration首先銷燬,然後銷燬feignContext。銷燬feignContext時,它將關閉與每個FeignClient關聯的ApplicationContext。由於eurekaAutoServiceRegistration監聽ContextClosedEvent,因此這些事件將發送到該bean。不幸的是,由於它已被銷燬,因此我們得到了上述異常(嘗試在銷燬中創建bean)。

解決方法:隨便找個地方新建如下類即可

@Component
public class FeignBeanFactoryPostProcessor implements BeanFactoryPostProcessor {

@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
if (containsBeanDefinition(beanFactory, "feignContext", "eurekaAutoServiceRegistration")) {
BeanDefinition bd = beanFactory.getBeanDefinition("feignContext");
bd.setDependsOn("eurekaAutoServiceRegistration");
}
}

private boolean containsBeanDefinition(ConfigurableListableBeanFactory beanFactory, String... beans) {
return Arrays.stream(beans).allMatch(b -> beanFactory.containsBeanDefinition(b));
}
}

原因2:可能是jar包引用衝突,可以查看maven依賴逐個排查

 

2、項目啓動端口衝突

這個現象可能有兩個原因:

     1)同一個項目啓動的狀態下,直接關閉idea編輯器,重新運行該項目時會發生端口衝突

     2)可能有另一個項目佔用這個端口

解決方法(有三種):

    方法一、修改項目端口,換一個不衝突的端口(端口很多,不用擔心不夠用)

    方法二、查殺進程

            a.lsof -i:8080  查找佔用端口的程序(實例是查找佔用8080端口的進程)

            b.kill -9 1472 殺進程(1472爲查到的進程號)

    方法三、關機重啓

     

 

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