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 JAR qui fonctionnait bien sur Java 1.7 x64 avec JRE 7. Lorsque nous sommes passés au nouveau serveur, notre JAR fonctionnait bien, mais l'un des administrateurs du serveur a "mis à jour" notre Java vers un ancien version et désinstallé celui que nous utilisions. Ne me demandez pas pourquoi, je ne sais pas. J'ai réinstallé Java 1.7 et désinstallé 1.6 avec les JRE.
Le problème suivant se produit au moment de l'exécution, il n'y a aucune 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 JAR sur mon ordinateur portable sans aucun problème. Le serveur et mon ordinateur portable ont tous deux JDK 1.7 et JRE 7 dans les variables% HOME% et PATH système respectifs. 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 changé le registre pour regarder 1.6 et il en résulte ce qui suit, que j'ai recherché et il semble que plusieurs Javas soient installés (ce qui ramène à mon problème d'origine):
Exception in thread "main" java.lang.UnsupportedClassVersionError: ... :
Unsupported major.minor version 51.0
J'apprécierais toute perspicacité que vous ayez tous car j'ai regardé sur divers forums mais rien ne semble avoir exactement mon problème. De plus, cela s'est produit sur un autre serveur que nous utilisons également. Merci!
Mise à jour: pas de chance de recompiler le JAR en 1.6 ou 1.7 et de faire correspondre le JDK. Aussi, pourquoi diable une version plus récente de Java casserait-elle une ancienne version compilée?
la source
java.exe
,,javaw.exe
etjavaws.exe
est stocké sousWindows/SysWOW64
. En outre , pour une raison lorsque j'ai installé le 1.8 sdk installéjava.exe
,javaw.exe
etjavaws.exe
sousC:/ProgramData/Oracle/Java/javapath
. Je ne sais pas pourquoi, mais je les ai également supprimés etjava -version
fonctionne toujours.J'ai juste eu l'erreur similaire lors de l'installation de java 8 (jdk et jre) sur un système exécutant déjà Java 7.
Mon environnement a été configuré correctement (Path & java_home correctement définis), mais le problème vient de la façon dont les installateurs Java antérieurs à 8 fonctionnaient, c'est-à-dire qu'ils copiaient les trois exécutables (java.exe, javaw.exe & javaws.exe ) dans le répertoire système Windows. Celles-ci restent à moins d'être écrasées par une nouvelle installation antérieure à 8.
Cependant, le programme d'installation de Java 8 crée à la place 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 7 anciens ex mais que vous utiliserez les 8 nouvelles DLL.
Donc, la solution est simplement de supprimer les 3 ex Java, comme ci-dessus, du répertoire système de Windows.
Si vous exécutez Java 32 bits sur un Windows 64 bits, les ex seraient dans Windows \ SysWOW64, sinon dans Windows \ System32.
la source
J'ai supprimé les fichiers java dans windows / system32 et j'ai également supprimé c: \ ProgramData \ Oracle \ Java \ javapath de la variable PATH, car il y avait 3 liens symboliques vers les fichiers java 1.8.
J'avais JDK 1.7 dans la variable% JAVA_HOME% et java1.7 / bin dans le PATH.
PS1: Mon problème était entre Java 1.7 et Java 1.8.
PS2: Je ne peux pas ajouter cela comme commentaire à la réponse de Victor car je n'ai pas assez de points.
la source
Dans le menu START, tapez "regedit" pour ouvrir l'éditeur de registre
Accédez à "HKEY_LOCAL_MACHINE" dans le menu de l'explorateur / arborescence de registre de gauche
Cliquez sur "SOFTWARE" dans les registres "HKEY_LOCAL_MACHINE"
Cliquez sur "JavaSoft" dans les registres "SOFTWARE"
Cliquez sur "Java Runtime Environment" dans la liste "JavaSoft" des registres. Ici, vous pouvez voir différentes versions de Java installé.
Cliquez sur "Java Runtime Environment" - Sur le côté droit, vous obtiendrez 4 à 5 lignes. Veuillez sélectionner "CurrentVersion" et faites un clic droit (sélectionnez l'option de modification) Changez la version en "1.7"
Maintenant, la magie est terminée
la source
Je ne sais pas si quelqu'un suit toujours ce fil, mais j'ai récemment eu ce problème lorsque j'ai essayé de lancer ActiveMQ 5.10 en tant que service Windows.
Je n'avais pas de chemin d'accès JAVA_HOME défini. J'ai installé Java 6 et Java 7, mais la version par défaut était la v7. (c'est-à-dire si j'ai ouvert une fenêtre de commande et tapez "java -version").
C'est là que se trouvait l'indice - "java -version" a renvoyé "Java HotSpot (TM) 64-Bit Server VM (build 23.1-b03, mode mixte)" mais j'avais installé le service Win32 ...
Il s'avère que si vous utilisez le wrapper Win32 sur une machine 64 bits, il décide en quelque sorte d'utiliser une version différente de Java ...
Ma solution consistait donc à désinstaller la version 32 bits du wrapper et à installer la version 64 bits. aversion sur ma machine; juste une habitude je suppose ... Mais heureusement, j'ai finalement résolu le problème ...
la source
Pour mon Win7
Paradox était 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'obtiens des liens vers ces fichiers, je les ai supprimés. La recherche suivante m'a donné des liens vers des fichiers de JAVA_HOME
la magie )
la source
Passer au répertoire avec correct,
java.exe
c'est-à-dire aller à la version JDK requisejava.exe
Exécutez le à
java.exe
partir de ce répertoire, il a la priorité sur les paramètres de registre et $ PATH.la source
J'ai résolu ce problème en désinstallant Java 1.8
la source
Le pot a été compilé pour être
1.6
conforme. C'est pourquoi vous obtenez cette erreur. Deux résolutions:1) Utilisez Java 1.6
OU
2) Recompilez le fichier JAR pour qu'il soit conforme à votre environnement
1.7
la source
En utilisant regedit, supprimez les entrées correspondant à java 7. Cela fonctionnera.
la source