關於Java編譯的問題

今天在發佈項目的時候遇到了一個關於編譯的問題,問了同事才搞清楚原因,下面詳細說一下我所遇到的問題。


我在本地改了一個實體類,把其中的一個字段類型由String改爲了Integer,

重新編譯之後,我單獨把該class文件拖放到服務器上,然後重啓tomcat,

發現在service中調用該實體的被修改字段的get方法的時候,報錯,說是找不到String類型,

我覺着奇怪,明明已經在實體類中改了類型了,通過反編譯實體類的class文件,發現已經是修改之後的Integer類型,

但是調用該字段的get方法的實體類我沒有重新編譯,

最後同事告訴我,service是因爲編譯之後在JVM中運行的二進制還是修改之前String類型的,所以才報的這個錯誤。


如下圖,是實體類修改之前的service的編譯文件,直接打開查看的(UTF-8編碼格式下查看的):



下圖這個是重新編譯之後的service的class文件:



雖然這個service沒有修改,但是由於引用的實體類改變了,所以也需要重新編譯之後再發布一下!


在這裏感謝一下同事,哈哈!


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