前言
今天在IDEA上寫了一個項目,使用IDEA運行main函數時,程序運行正常,但是放到服務器上,使用maven的指令:mvn exec:java -Dexec.mainClass=""的時候,報了一個八竿子打不着的錯誤:ObjectInputStream的異常。
但是項目在IDEA上執行是正常的,於是我在本地也使用mvn exec來執行項目,發現還是報錯。
陷入了沉思。。。
解決思路
IDEA運行時,使用的class文件和mvn exec使用的文件是一致的,那麼問題就應該出現在依賴的包上,於是寫了另一個Main類,在裏面調用了引用的依賴中的一個類,然後使用mvc exec執行這個Main類,發現報錯ClassNotFoundExeception。
問題就很明顯了,mvn exec執行的時候,並沒有將依賴引入進來。
解決方式
考慮到maven引入依賴的時候,所有依賴默認的scope都是compile。
exec文檔說可以修改執行時類路徑的scope,於是在原有指令後面加了一個 -Dexec.classpathScope=compile,程序就能正常運行了。