Il y a des problèmes de compatibilité connus avec JDK7 code compilé à l'aide de l'instrumentation. Comme pour http://www.oracle.com/technetwork/java/javase/compatibility-417013.html
Classfiles avec le numéro de version 51 sont exclusivement vérifié à l'aide de la vérification de type vérificateur, et donc les méthodes doivent avoir StackMapTable attributs lorsque cela est approprié. Pour classfiles avec la version 50, le Hotspot de la JVM (et continue) de basculement pour le type d'inférence verifier si le stackmaps dans le fichier manquant ou incorrect. Ce comportement de basculement ne se produit pas pour classfiles avec la version 51 (la version par défaut de Java SE 7). Tout outil qui modifie le bytecode dans une version 51 classfile devez être sûr de mettre à jour le stackmap de l'information pour être cohérent avec le pseudo-code afin de passer à la vérification.
La solution est d'utiliser -XX:-UseSplitVerifier
comme l'a résumé ici:
http://weblogs.java.net/blog/fabriziogiudici/archive/2012/05/07/understanding-subtle-new-behaviours-jdk-7
Comment il est sûr? Je suppose que Oracle a mis cette case pour une raison. Si je ne l'utilise pas, j'ai peut-être risquer quelques autres questions.
Quelles peuvent être les conséquences de l'utilisation de -XX:-UseSplitVerifier
?
Merci,
Piotr.