Mein Entwicklungsteam wurde kürzlich in eine Remote-Entwicklungsumgebung versetzt, in der wir keinen vollständigen Zugriff auf die Server haben. Vor der Umstellung hatten wir eine JAR, die unter Java 1.7 x64 zusammen mit JRE 7 einwandfrei lief. Als wir auf den neuen Server umgestiegen sind, lief unsere JAR in Ordnung, aber dann "aktualisierte" einer der Serveradministratoren unser Java auf ein älteres Version und deinstallierte die von uns verwendete. Frag mich nicht warum, ich weiß es nicht. Ich habe Java 1.7 neu installiert und 1.6 zusammen mit den JREs deinstalliert.
Das folgende Problem tritt zur Laufzeit auf, es liegen keine Buildfehler vor:
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.
Ich habe dieselbe JAR auf meinem Laptop ohne Probleme ausgeführt. Sowohl der Server als auch mein Laptop haben JDK 1.7 und JRE 7 in den jeweiligen% HOME% -Variablen und im Systempfad. Ich habe sogar JRE 6 neu installiert und später mit dem gleichen Ergebnis in die PATH-Variablen der Systemumgebung eingefügt.
Ich habe auch die Registrierung wieder auf 1.6 geändert und es ergibt sich Folgendes, das ich nachgeschlagen habe und das anscheinend darauf zurückzuführen ist, dass mehrere Javas installiert sind (was zu meinem ursprünglichen Problem zurückführt):
Exception in thread "main" java.lang.UnsupportedClassVersionError: ... :
Unsupported major.minor version 51.0
Ich würde mich über jeden Einblick freuen, den Sie alle haben, da ich verschiedene Foren durchgesehen habe, aber nichts scheint genau mein Problem zu haben. Dies ist auch auf einem anderen Server geschehen, den wir ebenfalls verwenden. Vielen Dank!
Update: Kein Glück, die JAR auf 1.6 oder 1.7 neu zu kompilieren und mit dem JDK übereinzustimmen. Warum in aller Welt würde eine neuere Version von Java eine ältere kompilierte Version beschädigen?
quelle
java.exe
,javaw.exe
Undjavaws.exe
wird gespeichert unterWindows/SysWOW64
. Auch aus irgendeinem Grund, als ich das 1.8 SDK installiertejava.exe
, installierte esjavaw.exe
undjavaws.exe
darunterC:/ProgramData/Oracle/Java/javapath
. Ich weiß nicht warum, aber ich habe sie auch gelöscht undjava -version
funktioniert immer noch.Hatte gerade den ähnlichen Fehler bei der Installation von Java 8 (jdk & jre) auf einem System, auf dem bereits Java 7 ausgeführt wird.
Meine Umgebung wurde korrekt eingerichtet (Pfad & java_home korrekt definiert), aber das Problem ergibt sich aus der Funktionsweise von Java-Installationsprogrammen vor 8, dh dem Kopieren der drei ausführbaren Dateien (java.exe, javaw.exe & javaws.exe) ) in das Windows-Systemverzeichnis. Diese bleiben erhalten, sofern sie nicht durch eine neue Installation vor 8 überschrieben werden.
Das Java 8-Installationsprogramm erstellt jedoch stattdessen symbolische Links in einem neuen Verzeichnis, C: \ ProgramData \ Oracle \ Java \ javapath, das auf den tatsächlichen JRE 8-Speicherort verweist.
Dies bedeutet, dass Sie tatsächlich die alten 7 Exes ausführen, aber die neuen 8 DLLs verwenden.
Die Lösung besteht also einfach darin, die 3 Java-Exes wie oben aus dem Windows-Systemverzeichnis zu löschen.
Wenn Sie 32-Bit-Java unter 64-Bit-Windows ausführen, befinden sich die Exes in Windows \ SysWOW64, andernfalls in Windows \ System32.
quelle
Ich habe Java-Dateien unter Windows / System32 gelöscht und auch c: \ ProgramData \ Oracle \ Java \ javapath aus der PATH-Variablen entfernt, da es 3 Symlinks zu Java 1.8-Dateien gab.
Ich hatte JDK 1.7 in der Variablen% JAVA_HOME% und java1.7 / bin im PATH.
PS1: Mein Problem war zwischen Java 1.7 und Java 1.8.
PS2: Ich kann dies nicht als Kommentar zu Victors Antwort hinzufügen, weil ich nicht genug Punkte habe.
quelle
Geben Sie im Menü START "regedit" ein, um den Registrierungseditor zu öffnen
Gehen Sie zu "HKEY_LOCAL_MACHINE" im linken Registrierungs-Explorer / Baum-Menü
Klicken Sie in den Registern "HKEY_LOCAL_MACHINE" auf "SOFTWARE"
Klicken Sie in den "SOFTWARE" -Registern auf "JavaSoft"
Klicken Sie in der "JavaSoft" -Liste der Registrierungen auf "Java Runtime Environment". Hier sehen Sie verschiedene Versionen von installiertem Java
Klicken Sie auf "Java Runtime Environment" - Auf der rechten Seite erhalten Sie 4-5 Zeilen. Bitte wählen Sie "CurrentVersion" und klicken Sie mit der rechten Maustaste (Option "Ändern" auswählen). Ändern Sie die Version in "1.7".
Jetzt ist die Magie abgeschlossen
quelle
Ich weiß nicht, ob noch jemand diesem Thread folgt, aber ich hatte kürzlich dieses Problem, als ich versuchte, ActiveMQ 5.10 als Windows-Dienst zu starten.
Ich hatte keinen JAVA_HOME-Pfad festgelegt. Ich hatte Java 6 und Java 7 installiert, aber die Standardversion war v7. (dh wenn ich ein Befehlsfenster geöffnet habe und "java -version" eingebe).
Hier war der Hinweis - "Java-Version" gab "Java HotSpot (TM) 64-Bit-Server-VM (Build 23.1-b03, gemischter Modus)" zurück, aber ich hatte den Win32-Dienst installiert ...
Es stellt sich heraus, dass der Win32-Wrapper auf einem 64-Bit-Computer eine andere Java-Version verwendet ...
Mein Fix bestand also darin, die 32-Bit-Version des Wrappers zu deinstallieren und die 64-Bit-Version zu installieren. Abneigung gegen meine Maschine; Nur Gewohnheit, denke ich ... Aber zum Glück habe ich das Problem irgendwann gelöst ...
quelle
Für mein Win7
Paradox war java.exe und javaw.exe im System32-Ordner. Beim Öffnen dieses Ordners konnte ich sie nicht sehen, aber über die Suche im Startmenü erhalte ich Links zu diesen Dateien und habe sie entfernt. Next Searsh gab mir Links zu Dateien von JAVA_HOME
Magie )
quelle
Wechseln Sie in das richtige Verzeichnis,
java.exe
dh wechseln Sie zur erforderlichen JDK-Versionjava.exe
Führen Sie das
java.exe
aus diesem Verzeichnis aus, es hat Vorrang vor den Einstellungen für Registrierung und $ PATH.quelle
Ich habe dieses Problem durch Deinstallation von Java 1.8 gelöst
quelle
Das Glas wurde so zusammengestellt, dass es den
1.6
Anforderungen entspricht. Deshalb erhalten Sie diesen Fehler. Zwei Vorsätze:1) Verwenden Sie Java 1.6
ODER
2) Kompilieren Sie das Glas neu, damit es Ihrer Umgebung entspricht
1.7
quelle
Entfernen Sie mit regedit die Einträge, die Java 7 entsprechen. Es wird funktionieren.
quelle