現象
jdk1.8編譯的高版本的類運作在低版本的jre1.6中,報錯class file has wrong version 52.0, should be 50.0
原因
編譯産生的.class檔案中包含次版本号 minor_version和主版本号 major_version

如寫一個測試類,用jdk1.8編譯之後的class檔案,用javap -verbose檢視,發現類主版本是52
javap -verbose InstanceTest.class
當使用jre 1.6執行時,就會報以上的錯誤
解決方案:
- 降低編譯版本(1.6),重新編譯;這種方案無需動生産環境,僅需要修改構件pom檔案中的jdk版本,但是如果源碼中包含類高版本的特性,就需要重構代碼。
- 或者提高執行環境的jdk版本(1.8) 這種方案通常比較困難,已經生産環境的java環境牽一發而動全身