web-dev-qa-db-fra.com

Erreur lors du démarrage de Tomcat, version majeure/mineure non prise en charge, les variables d'environnement semblent correctes

Je ne parviens pas à démarrer Tomcat 7 à partir de la ligne de commande sous Linux. Le journal montre ceci:

Sep 24, 2012 8:54:10 AM org.Apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the jav
a.library.path: /usr/lib64/jvm/Java-1.6.0-openjdk-1.6.0/jre/lib/AMD64/server:/usr/lib64/jvm/Java-1.6.0-openjdk-1.6.0/jre/lib/AMD64:/u
sr/lib64/jvm/Java-1.6.0-openjdk-1.6.0/jre/../lib/AMD64:/usr/lib64/mpi/gcc/openmpi/lib64:/usr/Java/packages/lib/AMD64:/usr/lib64:/lib6
4:/lib:/usr/lib
Sep 24, 2012 8:54:10 AM org.Apache.Tomcat.util.digester.Digester startElement
SEVERE: Begin event threw error
Java.lang.UnsupportedClassVersionError: pms/security/BCryptRealm : Unsupported major.minor version 51.0
        at Java.lang.ClassLoader.defineClass1(Native Method)
        at Java.lang.ClassLoader.defineClass(ClassLoader.Java:634)
        at Java.security.SecureClassLoader.defineClass(SecureClassLoader.Java:142)
        at Java.net.URLClassLoader.defineClass(URLClassLoader.Java:277)
        at Java.net.URLClassLoader.access$000(URLClassLoader.Java:73)
        at Java.net.URLClassLoader$1.run(URLClassLoader.Java:212)
        at Java.security.AccessController.doPrivileged(Native Method)
        at Java.net.URLClassLoader.findClass(URLClassLoader.Java:205)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:321)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:266)
        at org.Apache.Tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.Java:144)
        at org.Apache.Tomcat.util.digester.Digester.startElement(Digester.Java:1276)
        at com.Sun.org.Apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.Java:504)
        at com.Sun.org.Apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.Java:182)
        at com.Sun.org.Apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.jav
a:1320)
        at com.Sun.org.Apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScann
erImpl.Java:2732)
        at com.Sun.org.Apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.Java:625)
        at com.Sun.org.Apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.Java:48
8)
        at com.Sun.org.Apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.Java:819)
        at com.Sun.org.Apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.Java:748)
        at com.Sun.org.Apache.xerces.internal.parsers.XMLParser.parse(XMLParser.Java:123)
        at com.Sun.org.Apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.Java:1208)
        at com.Sun.org.Apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.Java:525)
        at org.Apache.Tomcat.util.digester.Digester.parse(Digester.Java:1537)
        at org.Apache.catalina.startup.Catalina.load(Catalina.Java:610)
        at org.Apache.catalina.startup.Catalina.load(Catalina.Java:658)
        at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
        at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
        at Java.lang.reflect.Method.invoke(Method.Java:616)
        at org.Apache.catalina.startup.Bootstrap.load(Bootstrap.Java:281)
        at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:450)

De googler, je comprends le premier bit que je peux ignorer, mais je me demandais si cela indiquait la version de Java qu’il essayait d’utiliser, puisqu’il continuait à dire Java 6. Le "major non pris en charge version 51.0" Je comprend un problème avec les versions de Java en quelque sorte. 

J'ai construit la classe qui rencontre des problèmes (avec un domaine personnalisé utilisant BCrypt) avec ant, et exécuter ant -v montre que la compilation avec Java 7 est ce que je veux. J'ai également configuré Java_HOME et JDK_HOME pour utiliser Java 7 (ils pointent tous au même endroit, autant que je sache). 

Que manque-t-il d'autre? Si plus d'informations sont nécessaires faites le moi savoir. J'apprécierais vraiment tous les indicateurs sur lesquels je devrais chercher ce qui ne va pas. Merci.

ETA un peu plus d’informations par question dans les commentaires: Je lance Tomcat via la ligne de commande. Je fais juste ./bin/startup.sh à partir du répertoire de base Tomcat. J'ai téléchargé Tomcat à partir du site Web Apache . J'ai obtenu la version de base tar.gz et l'ai décompressée hier soir (je n'avais que la version 6 auparavant et je voulais effectuer une mise à niveau). Aussi ce n'est pas ma machine personnelle; Je n'ai que des droits d'utilisateur, si cela compte.

11
Maltiriel

Ouvrez le répertoire Tomcat/bin et modifiez le paramètre Java_HOME dans catalina.sh

10
Ilya

Je ne pense pas que les réponses données sont correctes. En fait, exception majeure.minor signifie que la version Java actuelle que vous avez installée ne correspond pas à la configuration minimale requise. En particulier, dans votre erreur dit 51 (qui est le code interne de Java SE 7). Donc, pour résoudre le problème, vous devez installer Java 7.

3
juancancela

Assurez-vous que JRE_HOME est défini sur JRE1.6 (ou supérieur).

En outre, juste un gotcha. Si vous avez deux installations de Tomcat (à savoir Tomcat8 et Tomcat7), assurez-vous que votre variable CATALINA_HOME n'est pas définie sur le chemin de Tomcat8. Comme cela causera également ce problème. (J'ai oublié les journaux au début!)

C:\devtools\Apache-Tomcat-7.0.47\bin>set CATALINA_HOME=C:\devtools\Apache-Tomcat-8.0.0-RC5

C:\devtools\Apache-Tomcat-7.0.47\bin>configtest.bat
Using CATALINA_BASE:   "C:\devtools\Apache-Tomcat-8.0.0-RC5"
Using CATALINA_HOME:   "C:\devtools\Apache-Tomcat-8.0.0-RC5"
Using CATALINA_TMPDIR: "C:\devtools\Apache-Tomcat-8.0.0-RC5\temp"
Using JRE_HOME:        "C:\Progra~1\Java\jdk1.6.0_45\jre\"
Using CLASSPATH:       "C:\devtools\Apache-Tomcat-8.0.0-RC5\bin\bootstrap.jar;C:\devtools\Apache-Tomcat-8.0.0-RC5\bin\Tomcat-juli.jar"
Exception in thread "main" Java.lang.UnsupportedClassVersionError: org/Apache/catalina/startup/Bootstrap : Unsupported major.minor version 51.0
        at Java.lang.ClassLoader.defineClass1(Native Method)
        at Java.lang.ClassLoader.defineClassCond(ClassLoader.Java:631)
        at Java.lang.ClassLoader.defineClass(ClassLoader.Java:615)
        at Java.security.SecureClassLoader.defineClass(SecureClassLoader.Java:141)
        at Java.net.URLClassLoader.defineClass(URLClassLoader.Java:283)
        at Java.net.URLClassLoader.access$000(URLClassLoader.Java:58)
        at Java.net.URLClassLoader$1.run(URLClassLoader.Java:197)
        at Java.security.AccessController.doPrivileged(Native Method)
        at Java.net.URLClassLoader.findClass(URLClassLoader.Java:190)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:306)
        at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:301)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:247)
Could not find the main class: org.Apache.catalina.startup.Bootstrap.  Program will exit.

Fyi, vous pouvez désactiver CATALINA_HOME en utilisant:

set CATALINA_HOME=
2
Nick Grealy

J'ai rencontré le même problème et j'ai découvert que j'utilisais Tomcat 8.5 avec jdk version 1.6, ce qui n'était pas compatible. Plus tard, j'ai installé la dernière version de JDK 1.8 et le problème a été résolu.Espoir que cela aide.

0
Navin Prakash Das