Exception de balise d'octet non valide dans Tomcat 7 avec Java 8
Lors du portage d'une application Web de Tomcat 7 et Java 7 vers un autre serveur exécutant Tomcat 7 et Java 8, une erreur peut survenir au démarrage :
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15
Cette exception provient de BCEL, la bibliothèque d'ingénierie de bytecode Java utilisée par Tomcat. En particulier, l'analyse des annotations (avec metadata-complete="true" dans web.xml) peut déclencher des problèmes en raison de l'incapacité de BCEL à traiter certains codes Java 8 octets.
Solutions :
1. Désactiver l'analyse des annotations :
Si l'analyse des annotations n'est pas essentielle, elle peut être désactivée en définissant metadata-complete="false" dans web.xml.
2. Tomcat 7.0.53 ou version ultérieure :
Tomcat 7.0.53 et versions ultérieures incluent un compilateur mis à jour avec une prise en charge améliorée de Java 8. La mise à niveau vers ces versions devrait résoudre l'exception.
3. Ignorer les fichiers JAR Java 8 pour l'analyse des annotations (avancé) :
Si l'analyse des annotations est requise et que l'application Web n'est pas basée sur Java 8, ajoutez la ligne suivante à /etc/tomcat7/catalina.properties :
junit.jar,junit-*.jar,ant-launcher.jar,\jfxrt.jar,nashorn.jar
Cette ligne demande à Tomcat d'ignorer les JAR Java 8 spécifiques 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!