1. 程式人生 > >spring boot生成的war包執行時出現java.lang.NullPointerException: null

spring boot生成的war包執行時出現java.lang.NullPointerException: null

最近寫了一個數據庫同步的程式,見之前的部落格,沒有用到spring框架來整合,用的時純Java程式碼。然後,專案經理要我把程式合到spring boot框架中,因為涉及到多資料來源,時間又比較緊,同意我直接將純Java程式碼合進去。

用的jenkins進行部署,當部署成功後,發現出現一個錯誤:

定位到程式碼處:

1 String resource = "com/huifu/newhl/nobel/config/mybatis-configuration.xml";
2         InputStream inputStream = null;
3         try {
4             inputStream = Resources.getResourceAsStream(resource);
5 } catch (IOException e) { 6 e.printStackTrace(); 7 } 8 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream, dataName); 9 SqlSession session = sessionFactory.openSession();

在第8行,報了nullPointer。那就奇怪了,明明在純Java程式碼環境,可以正常執行,怎麼通過spring boot打包釋出到jboss上執行就不行了。百思不得其解,只好去問專案經理,專案經理還是有經驗,首先不要慌!仔細分析問題原因,建議到百度搜索JBOSS Resources.getResourceAsStream null,然後大概定位出問題,是因為我的xml檔案放在src/main/java路徑下,當打包成war包的時候,並沒有生成相應的檔案,導致查詢不到,我解壓了war包,到下面一看,果然沒有config目錄!

那當然找不到xml檔案,自然報null錯誤,專案經理說要把xml檔案放在src/main/resouces目錄下面,相同的路徑。至此,問題基本已經解決,即src/main/java和src/main/resouces的區別,可以參考這篇部落格:https://blog.csdn.net/jsflzhong/article/details/52077075,maven打包的時候,認為src/main/java就是原始碼的檔案,xml檔案不會被打包進如jar或者war包。