web-dev-qa-db-fra.com

Tomcat 7 avec Java 8 sous Windows et Linux

J'ai eu le problème suivant:

Je veux utiliser Java Servlet construit sur la cible Java-8 avec Apache Tomcat 7.0.54.

Lorsque je l'exécute sur ma machine locale (Win-64, jdk build 1.8.0-b132), cela fonctionne parfaitement.

Mais lorsque je le déploie en production (Debian GNU/Linux 7.5 (Wheezy), jdk build 1.8.0-b132, Tomcat 7.0.54-2), il génère:

Unsupported major.minor version 52.0 (unable to load class ru.tomtrix.fvds.servlets.ItemServlet)

... cela signifie des classes Java-8 non prises en charge ....... Alors, qu'est-ce qui ne va pas avec les instances Windows et Linux de la version même de Tomcat?

11
Mitrakov Artem

Merci à tous, j'ai trouvé ce qui s'est passé. Il s’est avéré que Java_HOME n’était pas défini correctement (comme l’indiquent la déconnexion et Marko Topolnik). J'ai ouvert/etc/default/Tomcat7 et modifié cette section:

# The home directory of the Java development kit (JDK). You need at least
# JDK version 6. If Java_HOME is not set, some common directories for
# OpenJDK, the Oracle JDK, and various Java SE 6+ versions are tried.
#Java_HOME=/usr/lib/jvm/openjdk-6-jdk
Java_HOME=/path/to/my/jdk

... et tout commence à fonctionner! Tomcat utilise-t-il vraiment un JDK interne comme OpenJDK par défaut?

12
Mitrakov Artem

Chaque instance Tomcat utilise par défaut le JDK par défaut sur la machine . Vous pouvez modifier le JDK par défaut (si vous utilisez une instance Tomcat) ou indiquer à Tomcat d'utiliser un JDK différent.

  1. Pour définir un JDK différent pour chaque instance Tomcat:

catalina.sh appelle setenv.sh pour utiliser un JDK. Créez le fichier setenv.sh dans CATALINA_BASE/bin, s'il n'existe pas. CATALINA_BASE signifie le dossier Tomcat. Ouvrez setenv.sh avec gedit:

Sudo gedit setenv.sh

écrivez cette ligne:

export Java_HOME=/path/to/your/JDK

Tomcat recommande d'exporter Java_HOME dans setenv.sh et non dans catalina.sh.

  1. Pour changer le JDK par défaut sur Ubuntu:

    Sudo update-alternatives --install/votre/chemin/vers/JDK/bin/Java

ou: 

Sudo update-alternative --install  ${Java_HOME}/bin/Java

si vous avez défini Java_HOME.

3
Alex

La variable d’environnement Java_HOME n’a aucune incidence sur la façon dont Eclipse exécutera le code. De même, les paramètres de compilateur que vous avez indiqués pour un projet n'affectent pas l'exécution du code.

Au lieu de cela, vous devez examiner la configuration d'exécution que vous utilisez et vérifier l'environnement. Assurez-vous que vous utilisez Java 8, et tout devrait bien se passer. Cliquez sur le triangle en regard du bouton Exécuter, puis sélectionnez "Exécuter les configurations ..." pour ouvrir la boîte de dialogue contenant tous les paramètres. Consultez ensuite l'onglet JRE et assurez-vous d'utiliser le bon JRE.

0
Mind Peace