ClassFormatException : balise d'octet non valide dans le pool constant
Arrière-plan :
Pendant le portage d'un site Web application de Tomcat 7 vers un autre serveur avec la même version de Tomcat mais utilisant Java 8, il a été observé que Tomcat démarrait avec succès mais produisait une erreur dans le journal catalina.out :
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15
Cause :
L'erreur provient d'un problème avec la Bytecode Engineering Library (BCEL), utilisée par Tomcat, rencontrant des difficultés pour traiter les nouveaux codes Java 8 octets.
Solution 1 : Désactiver Analyse des annotations
Si l'analyse des annotations est activée dans web.xml (metadata-complete="true"), sa désactivation permet à l'application de s'exécuter sans rencontrer l'erreur.
Solution 2 : Mise à jour vers Tomcat 7.0.53 ou version ultérieure
À partir de Tomcat 7.0.53, le compilateur a été mis à jour avec une prise en charge améliorée de Java 8. Cette mise à jour résout le problème pour les applications utilisant l'analyse des annotations et du code non Java 8.
Solution 3 : ignorer certains fichiers Jar
Pour les situations où l'analyse des annotations est requise et l'application utilise du code Java 8, ajoutez la ligne suivante à catalina.properties :
junit.jar,junit-*.jar,ant-launcher.jar,\ jfxrt.jar,nashorn.jar
pour ignorer ces fichiers Jar lors de l'analyse des annotations.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!