Mon équipe de développement a récemment été contrainte de passer à un environnement de développement distant où nous n’avons pas un accès complet aux serveurs. Avant le changement, nous avions un fichier JAR qui fonctionnait correctement sur Java 1,7 x64 avec JRE 7. Lorsque nous avons migré sur le nouveau serveur, notre fichier JAR fonctionnait correctement, mais l'un des administrateurs de serveur "mis à jour" "notre Java vers une version plus ancienne et désinstallé celle que nous utilisions. Ne me demande pas pourquoi, je ne sais pas. J'ai réinstallé Java 1.7 et j'ai désinstallé la version 1.6 avec les JRE.
Le problème suivant se produit au moment de l'exécution, il n'y a pas d'erreur de construction:
Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'
has value '1.7', but '1.6' is required.
Error: could not find Java.dll
Error: could not find Java SE Runtime Environment.
J'ai exécuté le même fichier JAR sur mon ordinateur portable sans aucun problème. Le serveur et mon ordinateur portable ont JDK 1.7 et JRE 7 dans les variables respectives% HOME% et PATH du système. J'ai même réinstallé JRE 6 et l'ai placé plus tard dans les variables PATH de l'environnement système avec le même résultat.
J'ai également modifié le registre pour revenir à 1.6 et il en résulte ce qui suit, ce que j'ai recherché et il semble que plusieurs javas ont été installés (ce qui nous ramène à mon problème initial):
Exception in thread "main" Java.lang.UnsupportedClassVersionError: ... :
Unsupported major.minor version 51.0
Je vous serais reconnaissant de votre compréhension, car j’ai parcouru divers forums, mais rien ne semble me poser exactement le problème. Cela se produit également sur un autre serveur que nous utilisons également. Merci!
Mise à jour: Pas de chance avec la recompilation du JAR en 1.6 ou 1.7 et en correspondance avec le JDK. Aussi, pourquoi dans le monde une version plus récente de Java romprait-elle une version compilée plus ancienne?
Cela se produit lorsque vous avez confondu Java lui-même. Vous essayez d'exécuter un Java 6 VM où il a trouvé un JRE 7. Ce problème peut s'afficher même si vous tapez simplement en ligne de commande Java
ou Java -version
dans un environnement mal configuré. Le JAR n’est pas le problème, sauf dans le cas très improbable où le code dans JAR recherche cela dans le registre Windows (ce qui n’est probablement pas votre cas).
Dans mon cas, j’avais les Java.exe
, javaw.exe
et javaws.exe
de Java 6 dans le dossier Windows/System32
(je ne sais pas comment il est arrivé à Soyez là). Le reste du JDK et du JRE se trouvaient dans le PATH à l'intérieur de C:\Java\jdk_1.7.0\bin
. Oops!
Une erreur similaire venait de se produire lors de l’installation de Java 8 (jdk & jre) sur un système exécutant déjà Java 7.
Erreur: clé de registre 'Software\JavaSoft\Java Runtime
L'environnement '\ CurrentVersion' a la valeur '1.8', mais '1.7' est requis.
Erreur: impossible de trouver Java.dll Erreur: impossible de trouver Java SE Runtime Environment.
Mon environnement a été configuré correctement (Path & Java_home correctement défini), mais le problème provient de la façon dont les installateurs antérieurs à la version 8 Java fonctionnaient, c’est-à-dire du fait qu’ils copiaient les trois exécutables (Java.exe, javaw .exe & javaws.exe) dans le répertoire système Windows. Celles-ci restent, sauf si écrasées par une nouvelle installation antérieure à 8.
Toutefois, le programme d'installation Java 8 crée des liens symboliques dans un nouveau répertoire, C:\ProgramData\Oracle\Java\javapath, pointant vers l'emplacement réel de JRE 8.
Cela signifie que vous exécuterez les anciens 7 exes mais que vous utiliserez les nouvelles 8 DLL.
La solution consiste donc simplement à supprimer les 3 Java exes, comme ci-dessus, du répertoire système de Windows.
Si vous exécutez Java 32 bits sur un Windows 64 bits, les exes seraient sous Windows\SysWOW64, sinon sous Windows\System32.
J'ai supprimé les fichiers Java sous Windows/System32 et j'ai également supprimé c:\ProgramData\Oracle\Java\javapath de la variable PATH, car il y avait 3 liens symboliques vers Java 1.8 des dossiers.
J'avais JDK 1.7 dans la variable% Java_HOME% et Java1.7/bin dans le PATH.
PS1: Mon problème se situait entre Java 1.7 et Java 1.8.
PS2: Je ne peux pas ajouter ceci en tant que commentaire à la réponse de Victor car je n'ai pas assez de points.
Dans le menu Démarrer, tapez "regedit" pour ouvrir l'éditeur de registre.
Accédez à "HKEY_LOCAL_MACHINE" dans le menu de gauche de l'explorateur du registre et du registre.
Cliquez sur "LOGICIEL" dans les registres "HKEY_LOCAL_MACHINE".
Cliquez sur "JavaSoft" dans les registres "LOGICIEL".
Cliquez sur "Java Runtime Environment" dans la liste de registres "JavaSoft". Vous pouvez voir ici différentes versions de Java installé.
Cliquez sur "Java Runtime Environment". Sur la droite, vous obtiendrez 4 à 5 lignes. Veuillez sélectionner "CurrentVersion" et cliquer avec le bouton droit de la souris (sélectionnez l'option de modification). Changer la version en "1.7"
Maintenant la magie est terminée
Je ne sais pas si quelqu'un suit encore ce fil de discussion, mais j'ai récemment rencontré ce problème lorsque j'ai tenté de lancer ActiveMQ 5.10 en tant que service Windows.
Je n'avais pas de chemin Java_HOME défini. J'avais Java 6 et Java 7 installés, mais la version par défaut était v7. (c’est-à-dire si j’ouvre une fenêtre de commande et tape "Java -version").
Voici où se trouvait l'indice - "Java -version" renvoyait "Serveur Java HotSpot (TM) 64 bits VM (version 23.1-b03, mode mixte)" mais j'avais déjà installé le service Win32. .
Il s'avère que si vous utilisez l'encapsuleur Win32 sur une machine 64 bits, il décide en quelque sorte d'utiliser une version différente de Java ...
Mon correctif consistait donc à désinstaller la version 32 bits du wrapper et à installer la version 64 bits. l'aversion sur ma machine; juste l'habitude je suppose ... Mais heureusement, j'ai finalement résolu le problème ...
Pour ma Win7
Paradox était en train d'être Java.exe et javaw.exe dans le dossier System32. En ouvrant ce dossier, je ne pouvais pas les voir, mais en utilisant la recherche dans le menu Démarrer, j’obtenais des liens vers ces fichiers, je les supprimais. Searsh suivant m'a donné des liens vers des fichiers de Java_HOME
la magie )