Balise d'octet non valide dans un pool constant : un problème Tomcat avec Java 8
Rencontre d'une erreur « Balise d'octet non valide dans un pool constant : 15 » lorsque vous tentez de porter une application Web de Tomcat 7 vers un autre serveur exécutant Tomcat 7 avec Java 8 ? Cet article aborde le problème et propose des solutions.
Description du problème :
Au démarrage de Tomcat, l'application peut rencontrer une erreur comme indiqué dans le journal catalina.out :
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15
Cause possible :
L'erreur survient en raison de l'introduction de nouveaux codes d'octet par Java 8 que BCEL, la bibliothèque d'analyse de classes utilisée par Tomcat 7, peut ne pas être capable de traiter efficacement.
Solution :
Solution officielle :
Selon la documentation de Tomcat, exécuter Tomcat 7 sur Java 8 devrait fonctionner correctement.
Problème d'analyse des annotations :
Cependant, si l'analyse des annotations est activée dans le fichier web.xml de l'application Web, des problèmes peuvent survenir en raison de l'incapacité de BCEL pour gérer les codes Java 8 octets. Dans de tels cas, des exceptions comme celle ci-dessous peuvent apparaître :
SEVERE: Unable to process Jar entry [jdk/nashorn/internal/objects/NativeString.class] from Jar [jar:file:/usr/lib/jvm/jdk1.8.0_5/jre/lib/ext/nashorn.jar!/] for annotations org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15
Solutions pour l'analyse des annotations :
junit.jar,junit-*.jar,ant-launcher.jar,\ jfxrt.jar,nashorn.jar
Cette modification garantit que Tomcat ignore les fichiers jar problématiques 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!