已知存在使用工具的JDK7編譯代碼的兼容性問題。 至於http://www.oracle.com/technetwork/java/javase/compatibility-417013.html使用-XX有多安全:-UseSplitVerifier?
類文件的版本號51是專門使用已驗證的類型檢查覈實,因此,方法必須具有適當的時候StackMapTable屬性。對於版本爲50的類文件,如果文件中的堆棧映像丟失或不正確,則Hotspot JVM將(並繼續)故障轉移到類型 - 推理驗證器。對於具有版本51(Java SE 7的默認版本)的類文件,不會發生此故障轉移行爲。 任何修改版本51類文件中的字節碼的工具都必須確保將堆棧映射信息更新爲與字節碼一致以便通過驗證。
的解決方案是使用-XX:-UseSplitVerifier
作爲總結如下: http://weblogs.java.net/blog/fabriziogiudici/archive/2012/05/07/understanding-subtle-new-behaviours-jdk-7
其安全性如何?我猜想甲骨文已經把這張支票放了一個原因。如果我不使用它,我可能冒着其他一些問題冒險。
什麼是使用-XX:-UseSplitVerifier
的後果?
謝謝,
Piotr。
作爲未來讀者的延伸和可能的後果,但在Java8中,該標誌已被棄用。閱讀[this](http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/2013-March/006287.html)瞭解詳情。 – kurtzbot 2013-07-18 20:34:17