問題描述
出現這個問題時,控制台沒有任何輸出,進程直接退出Process finished with exit code 1
問題解決
嘗試加了一行打印語句
System.out.println("SpringBoot Start....");
結果是可以打印出來的:
SpringBoot Start....
Process finished with exit code 1
此時突然想到,那程序入口沒問題,就是下一行的問題了。
try {
SpringApplication.run(Application.class, args);
}catch(Exception e) {
e.printStackTrace();
}
結果是依然沒有任何輸出。但是作為踩坑無數的Java程序員,我們知道Exception還不是最頂級的異常類,於是換成Throwable
try {
SpringApplication.run(Application.class, args);
}catch(Throwable e) {
e.printStackTrace();
}
這樣打印出來真正的錯誤了,是一個 ClassDefNotFoundError
。
解決方案
出現這種情況,首先就要排除依賴沖突的問題,例如可以搜一下具體的這個Class。
將pom文件修改一下,排除某些依賴,然后多reimport一下項目,在Project Structure中,多檢查檢查Project Library,看看是否有不正常的版本。
例如在實際項目中,我用到的是最新的Spring 5.x,但是在Project Library中看到了 Spring 4.3.6的依賴。
結果仔細查發現兩個問題:
- Apache Dubbo 2.7.8的依賴是 Spring 4.3.6。
- 即使排除了Apache Dubbo 2.7.8,因為IDEA可能有緩存,導致需要多次reimport才能起效。
最后把依賴重新整理一下,該exclude掉的exclude了。
最后就可以直接run了。