Błąd klucza rejestru: wersja Java ma wartość „1,8”, ale wymagana jest wartość „1,7”

91

Podczas biegu

sencha app build production

Otrzymuję następujący błąd:

Błąd: klucz rejestru „Software \ JavaSoft \ Java Runtime Environment” \ CurrentVersion ”

ma wartość „1,8”, ale wymagana jest wartość „1,7”. Błąd: nie można znaleźć pliku java.dll Błąd: nie można znaleźć środowiska wykonawczego Java SE.

java -version , polecenie pokazuje:

java wersja „1.8.0_40” Java (TM) SE Runtime Environment (kompilacja 1.8.0_40-b26) Java HotSpot (TM) 64-bitowa maszyna wirtualna serwera (kompilacja 25.40-b25, tryb mieszany)

Nie mogę znaleźć miejsca, w którym ścieżka idzie źle. Dowolny pomysł?

----------------------- EDYTOWAĆ -------------------------- ----------------------

Uwaga : używam systemu Windows 7 (64-bitowego).

Próbowałem odinstalować cmd sencha touch i ponownie zainstalować. Ale wciąż ten sam błąd.

Odinstalowałem wszystkie instancje w wersji Java i ponownie zainstalowałem najnowszą, ale problem nadal występuje.

Anand Gupta
źródło

Odpowiedzi:

294

Po wypróbowaniu ponad stu sztuczek w końcu odniósł sukces.

Usunąłem wszystko java.exe, javaw.exeaz javaws.exemojego

  1. Windows\System32 i

  2. Windows\SysWOW64 teczka. [Wypróbuj krok 2, jeśli masz system x64 (Win 7 64 bity)]

Anand Gupta
źródło
11
Wygraj 10 użytkowników 64-bitowych: usunięcie 3 plików w System32rozwiązaniu problemu.
iTurki
4
Ale musimy zamknąć i ponownie otworzyć cmd i wpisać java -version, aby wyświetlić zmiany ... Działało jak urok dzięki!
Cristian B.
1
@SkepticScribbler: Dzieje się tak, gdy w jakiś sposób pomylisz samą Javę. Próbujesz uruchomić maszynę wirtualną java 7, na której znalazła środowisko JRE 8. Ten problem może się pojawić nawet wtedy, gdy w wierszu poleceń wpiszesz tylko java lub java -version w źle skonfigurowanym środowisku.
Anand Gupta,
@AnandGupta to strzał w ciemno, a nie rozwiązanie - stackoverflow.com/a/53192247/1423507
masseyb
39

W moim przypadku (Windows 7 64-bitowy) wykonałem tylko następujące czynności:

  • Usunięto odniesienie do C: \ ProgramData \ Oracle \ Java \ javapath; ze zmiennej środowiskowej Path
  • Usunięte pliki java , javaw i javaws z \ Windows \ System32: C Folder

Następnie zamknąłem wszystkie otwarte konsole wiersza poleceń, ponownie je otworzyłem i uruchomiłem wersję java .

aribeiro
źródło
Miałem ten problem w systemie Windows 10 podczas instalowania JDK5u14, JDK6u34, JDK7u51 i JDK8u121 (w tej kolejności). Usunięcie plików java z folderu Windows nie wystarczyło. Musiał także usunąć ścieżkę ze zmiennej środowiskowej PATH.
uhm,
31
  1. otwórz regedit
  2. iść do [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]
  3. zmień wartość CurrentVersionz „1,8” na „1,7”
szczęście
źródło
2
Dzięki. To rozwiązało mój problem. Nie mam uprawnień do usuwania czegokolwiek pod SysWOW64. Po prostu zmiana CurrentVersion za pomocą regedit rozwiązała mój problem.
Krish
1
O wiele prostsze rozwiązanie niż próba usunięcia wszystkich zbędnych wersji Java!
Fred Andrews
.. jednak to niczego nie rozwiązuje. Wtedy instalator narzeka i słusznie, że wymagana jest Java 8.
user508402
Dzięki temu rozwiązaniu próbowałem rozwiązać ten błąd przez długi czas
Abhishek Sawant
Ostrzeżenie: może zepsuć inne aplikacje skonfigurowane do korzystania z wersji 1.8.
Waqas
19

re: Użytkownicy systemu Windows

Nie. Nie usuwaj odwołania do środowiska Javapath ze zmiennej PATH.

Powodem, dla którego rejestr nie działał, jest to, że skrypt Oracle Javapath musi działać w sekwencji PATH przed katalogami JRE i JDK - posortuje bieżącą wersję:

umieść ten katalog na HEAD swojej %PATH%zmiennej:

C:\ProgramData\Oracle\Java\javapath

[lub gdziekolwiek jest na twoim pulpicie]

więc twoja PATH będzie wyglądać mniej więcej tak - na przykład moja

PATH=C:\ProgramData\Oracle\Java\javapath;<other path directories>;E:\Program Files\Java\jdk1.8.0_77\bin;E:\Program Files\Java\jre1.8.0_77\bin

Zobaczysz wtedy poprawną, aktualną wersję:

C:\>java -version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
Andrzej
źródło
Ten działa dla mnie. Mam system Windows 7 (64-bitowy). Jak zasugerowałeś, przeniosłem C: \ ProgramData \ Oracle \ Java \ javapath na początek PATH. Dzięki!
oprogramowania,
1
Hej, zadziałało! Nie zapomnij ponownie uruchomić komputera, dzięki.
Sandoval0992,
12

Moje doświadczenie:

Używam systemu Windows 8.1 i obniżyłem wersję JAVA z 1.8 do 1.7 i otrzymuję ten sam błąd.

Błąd: klucz rejestru „Software \ JavaSoft \ Ja ma wartość„ 1,7 ”, ale wymagana jest wartość„ 1,8 ”.

I zostały usunięte java.exe , javaw.exe i javaws.ex e z katalogu C: \ Windows \ System32 folderu i pracował dla mnie.

RJ_Singh
źródło
To nie zadziała, jeśli w ścieżce znajdują się inne pliki wykonywalne Java dla innych wersji Java.
Underverse
9

Miałem ten sam problem. Prostym rozwiązaniem, które się sprawdziło, jest zmiana kolejności wpisów w PATHfor JRE/JDK. Ten problem zaczął się pojawiać po zainstalowaniu, JRE 8którego instalacja umieściła niektóre pliki wykonywalne w System32 or SysWOW64katalogach, te pliki wykonywalne są zepsute. Aby rozwiązać problem:

  1. Utwórz zmienną środowiskową wskazującą na katalog główny JDK jako JAVA_HOME.

    set JAVA_HOME=C:\Progra~1\Java\jdk1.8.0_45

  2. Umieść wpis %JAVA_HOME%\binna początku w zmiennej środowiskowej PATH. Dołączanie istniejącej wartości PATH. Na przykład:

    path=C:\Program Files\Java\jdk1.8.0_45\bin;%path%

pratikch
źródło
3
Jest to najlepsze rozwiązanie, jeśli chcesz przechowywać wiele wersji Java obok siebie i nie masz uprawnień do modyfikowania rejestru i usuwania plików z folderu windows \ system.
Heinz,
3

Nie usunąłem żadnego z plików java.exe, ale zmieniłem kolejność mojej zmiennej System - „path” - tak, aby jako pierwszy wpis odzwierciedlał% JAVA_HOME% \ bin. To załatwiło sprawę.

rzepa424
źródło
3

Błąd jest wyraźny ...

Błąd: klucz rejestru „Software \ JavaSoft \ Java Runtime Environment” \ CurrentVersion ”ma wartość„ 1.8 ”, ale wymagana jest wartość„ 1.7 ”.

Błąd: nie można znaleźć pliku java.dll

Błąd: nie można znaleźć środowiska wykonawczego Java SE.

... próbujesz użyć java.exepliku wykonywalnego 1.7, gdy klucz rejestru HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment> CurrentVersionma wartość 1.8.

Powtarzającym się tematem proponowanych rozwiązań jest to, że błąd jest błędem konfiguracji . Błąd można rozwiązać na różne sposoby (np. Rekonfiguracja środowiska użytkownika lub usunięcie plików wykonywalnych java za pomocą kciuków i mieć nadzieję, że istnieje inna java.exefunkcja awaryjna w użytkownikach %PATH%i że java.exejest to właściwy plik wykonywalny).

poprawne rozwiązanie zależy od tego, co starasz się osiągnąć „? Starasz się obniżyć z JDK-8 do JDK-7 są próby uaktualnienia do jdk-8 ...”

Kroki reprodukcji

  1. zainstaluj jdk-7u80-windows-x64.exe

uwagi:

  • java.exewykonywalny dostępny użytkowników %PATH%jest zainstalowany wC:\Windows\System32
  • instalacja nie aktualizuje użytkowników %PATH%
  • HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment> CurrentVersionwpis rejestru ciąg tworzony jest (między innymi) z wartością1.7
  1. zainstaluj jdk-8u191-windows-x64.exe

uwagi:

  • użytkownicy %PATH%są aktualizowani, aby uwzględnić C:\Program Files (x86)\Common Files\Oracle\Java\javapathjako pierwszy wpis
  • się HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment> CurrentVersionwartość wpisy rejestru łańcuch jest zaktualizowana1.8
  1. zaktualizuj %PATH%zmienną środowiskową użytkowników , usuńC:\Program Files (x86)\Common Files\Oracle\Java\javapath

  2. w nowym wierszu polecenia java -version

Błąd: klucz rejestru „Software \ JavaSoft \ Java Runtime Environment” \ CurrentVersion ”ma wartość„ 1.8 ”, ale wymagana jest wartość„ 1.7 ”.

Błąd: nie można znaleźć pliku java.dll

Błąd: nie można znaleźć środowiska wykonawczego Java SE.

Rozwiązania)

  1. Rozwiązanie OP https://stackoverflow.com/a/29769311/1423507 to "trzymanie kciuki i nadzieja, że ​​istnieje rozwiązanie awaryjne java.exew użytkownikach %PATH%i że awaryjny plik wykonywalny jest poprawny" podejście do błędu. Biorąc pod uwagę etapy reprodukcji, usuwania java.exe, javaw.exeoraz javaws.exepliki wykonywalne z C:\Windows\System32(tylko w moim przypadku) spowoduje nie mający żadnego java.exeobecny w użytkownikach %PATH%prowadzących do błędu 'java' is not recognized as an internal or external command, operable program or batch file., który nie jest tak dużo roztworu.

  2. odpowiedzi https://stackoverflow.com/a/35775493/1423507 i https://stackoverflow.com/a/36516620/1423507 działają, ale wracasz do używania wersji java.exe1.7 (np. zaktualizuj wartość CurrentVersionklucza rejestru, aby pasowała do java.exewersji znalezionej w użytkowników %PATH%).

  3. upewnij się, że java.exe1.8 jest pierwszą znalezioną w użytkownikach %PATH%(nie ma znaczenia, jak to zrobisz), tj .:

    • zaktualizuj użytkowników, %PATH%aby uwzględnić jako C:\Program Files (x86)\Common Files\Oracle\Java\javapathpierwsi (upewnij się, że pliki wykonywalne w tym katalogu są poprawne)
    • zaktualizuj użytkowników, %PATH%aby najpierw uwzględnili bezwzględną ścieżkę do plików binarnych Java ( set PATH="C:\Program Files\Java\jre1.8.0_191\bin;%PATH%")
    • Zestaw Java zmienne specyficznego otoczenia i zmiana użytkowników, że %PATH%z nich ( set JAVA_HOME="C:\Program Files\Java"; set JRE_HOME=%JAVA_HOME%\jre1.8.0_191; set PATH=%JRE_HOME%\bin;%PATH%)
masseyb
źródło
@whoever_that_downvotes - tej odpowiedzi nie można ulepszyć bez konstruktywnej opinii. Upuść komentarz „dlaczego”, a być może uda się ulepszyć tę odpowiedź z korzyścią dla społeczności.
masseyb
2

Wystąpił ten błąd w niektórych usługach Windows z uruchomioną Javą. W końcu na moim komputerze próbowałem odinstalować inne wersje javy.

Zostawiłem tylko 1.8 i teraz wszystko działa.

Optimal Prime
źródło
1

odpowiedź aribeiro zadziałała dla mnie - z niewielkimi zmianami

  • Usunąłem odniesienie do C: \ ProgramData \ Oracle \ Java \ javapath; ze zmiennej środowiskowej Path
  • Zrobiłem / path / to / jdkhome jako pierwszy wpis w mojej zmiennej środowiskowej PATH. Myślę, że tylko to jest potrzebne.
abdel
źródło
1

Jak dla mnie na win7 64bit.

Skopiuj plik java.exe javaw.exe javaws.exe do folderu C:\Program Files\Java\jre1.8.0_91\bin to the C:\Windows\System32.

a następnie otwórz cmd, wpisz java -version.

C:\Users\HEcom>java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

Przed powyższym upewnij się, że CurrentVersion rejestru to 1.8

W menu START wpisz „regedit”, aby otworzyć edytor rejestru

  1. Przejdź do „HKEY_LOCAL_MACHINE” w menu eksploratora rejestru / drzewa po lewej stronie
  2. Kliknij „OPROGRAMOWANIE” w rejestrach „HKEY_LOCAL_MACHINE”
  3. Kliknij „JavaSoft” w rejestrach „OPROGRAMOWANIE”
  4. Kliknij „Java Runtime Environment” na liście rejestrów „JavaSoft”. ​​Tutaj możesz zobaczyć różne wersje zainstalowanej javy
  5. Kliknij „Java Runtime Environment” - po prawej stronie pojawi się 4-5 wierszy. Wybierz „CurrentVersion” i kliknij prawym przyciskiem myszy (wybierz opcję modyfikacji), aby upewnić się, że wersja to „1.8”
Francis Bacon
źródło
To naprawdę zły pomysł. Folder plików binarnych należy dodać do ścieżki zamiast przenosić pliki do folderu, który już znajduje się w ścieżce. Może to spowodować straszny ból głowy, jeśli ktoś inny musi zaktualizować Javę w systemie i nie ma wiedzy o tym „rozwiązaniu”. I to jest dokładnie źródło problemu dla operatora ... Zamiast tego napraw swoją ścieżkę.
Riwels
Zmień po prostu PRZESUŃ na Po prostu KOPIUJ i będziesz gotowy.
Matthieu
1

Moje rozwiązanie tego problemu pojawiło się po przeczytaniu i wypróbowaniu wszystkich powyższych.

W moim przypadku próbowałem obniżyć wersję Java, aby korzystać z wydruków w formacie Apache ActiveMQ. Po odinstalowaniu wszystkich wersji Javy i wyczyszczeniu rejestru pojawiał się ten sam błąd

Błąd: klucz rejestru „Software \ JavaSoft \ Java Runtime Environment” \ CurrentVersion ”ma wartość„ 1.7 ”, ale wymagana jest wartość„ 1.8 ”."

W moim przypadku musiałem udać się do zmiennych środowiskowych, edytować ścieżkę, otwórz lokalizację javapath ( C:\ProgramData\Oracle\Java\javapath) i tam było - trzy pliki ( java.exe, javaw.exe, javaws.exe), które pozostały z wersji JRE8.

Po ustaleniu tego faktu po prostu przełączyłem je na te same pliki z C:\Windows\SysWOW64katalogu (te były z JRE7wersji) i wszystko działało idealnie.

MikeG
źródło
1

Po ostatniej automatycznej aktualizacji Java nie mogłem uruchomić Javy z wiersza poleceń.

Moja zmienna ścieżki miała „C: \ ProgramData \ Oracle \ Java \ javapath;”

Nie mogłem wejść cd do 'C: \ ProgramData \ Oracle \ Java \ javapath;' z okna wiersza polecenia, ponieważ nie istniało.

Usunąłem C: \ ProgramData \ Oracle \ Java \ javapath; ' ze zmiennej ścieżki i zastąpiono ją „C: \ Program Files \ Java \ jre1.8.0_141 \ bin;”

user20150603
źródło
To znacznie bardziej komentarz niż odpowiedź. Pytanie dotyczy bardzo specyficznego narzędzia i jest bardzo jasne, że java jest rzeczywiście znaleziona.
GhostCat
1

Musisz zdefiniować folder jdk w zmiennej JAVA_HOME, dodać% JAVA_HOME% do ścieżki zmiennej

Usuń lub zmień nazwę plików java.exe, javaw.exe i javaws w folderze system32

wykonaj cmd.exe, wersja-java przyjmuje teraz nową wersję zdefiniowaną w JAVA_HOME.

El mehdi AZROUR
źródło
1

Oprócz odpowiedzi Ananda Gupty upewnij się, że nie jest używana żadna inna Java oprócz tej, której potrzebujesz. Uruchom which java( where javaw systemie Windows) i zobacz, które pliki wykonywalne Java są używane. Po prostu usuń te, których nie chcesz używać, a jeśli nie ma tego, którego potrzebujesz, dodaj go do PATH.

Siergiej K.
źródło
0

Najpierw powinieneś mieć Javę 7. Jeśli nie masz, zainstaluj ją najpierw (nie wiem, czego używasz, Linux, Mac, yum, apt, homebrew, powinieneś sam się przekonać).

Jeśli masz już Javę 7, uruchom:

echo $JAVA_HOME

Wyjście powinno być coś takiego: /usr/lib/jvm/java-8-oracle. W pobliżu tego katalogu powinieneś zobaczyć java-7katalog. Po znalezieniu biegnij

export JAVA_HOME=${java-7-dir}

Zmień za {java-7-dir}pomocą ścieżki do katalogu. Następnie możesz uruchomić polecenie.

To jest tylko tymczasowe rozwiązanie. Aby zmienić to na stałe, wprowadź powyższe polecenie do pliku~/.bashrc pliku.

EDYCJA: Jeśli używasz systemu Windows , zmień zmienną środowiskową JAVA_HOMEna ścieżkę katalogu instalacyjnego oprogramowania Java 7.

mtyurt
źródło
@AnandGupta Dodałem skrzynkę Windows.
mtyurt
W przypadku Linuksa musisz podać ścieżkę do pliku binarnego Java w JAVA_HOME. Na przykład /usr/java/jdk1.5.0_07/bin/java. W przypadku systemu Windows wystarczy katalog instalacyjny.
Aditya K
0

Mój krótki wkład, za podzielenie się tym samym problemem z wersją 64-bitową Talend Open Studio.

  1. Uruchom ręcznie .. \ TOS_DI-Win32-20150702_1326-V6.0.0 \ TOS_DI-win-x86_64.exe (bez łączenia menu startowego systemu Windows)
  2. i pojawia się ten komunikat o błędzie rejestru

Aby rozwiązać ten problem, usuń wszystkie pliki java.exe, javaw.exe i javaws.exe na c: \ ProgramData \ Oracle \ Java \ javapath \

i TOS zaczynają się poprawnie od wersji 64-bitowej!

Fabryka Undigo
źródło
0

Usuń go ze ścieżki systemowej:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem

I rozwiąże problem z aktualizacją wersji Java z 1.7 do 1.8

user5645373
źródło
1
Czy możesz nam powiedzieć, dlaczego?
Vinay Prajapati
0

Gdzieś istnieje inny plik java.exe z wersji jre 1.8, który znajduje się w „ścieżce”, należy go znaleźć i usunąć, jeśli jest to możliwe. może znajdować się w tempdata użytkownika dla aplikacji, które wymagają jre.

masoudifar
źródło
0

Zmień zmienną systemową JAVA_BIN i JAVA_HOME, a następnie zrestartuj system lub zaloguj się ponownie. Masz ten błąd, ponieważ nadal jest to ścieżka jdk1.7. W systemie Windows wygląda to tak: wprowadź opis obrazu tutaj

Tiina
źródło
0

Wystarczy zainstalować środowisko wykonawcze Java SE JRE 7!

Teraz widzisz „java 7” i „java 8” w „Programy i funkcje” w „Panelu sterowania”

U mnie to zadziałało.

Tenesi
źródło
0

Jednym z możliwych rozwiązań tego problemu jest dodanie do folderu Sencha CMD pliku bat, jak sugerowano w tym wątku Sencha Cmd 5 + Java 8 Error .

Partia będzie miała nazwę „sencha.bat” z tym kodem:

@echo off
set JAVA_HOME=<YOUR JDK 7 HOME>
set PATH=%JAVA_HOME%\bin;%PATH%
set SENCHA_HOME=%~dp0
java -jar "%SENCHA_HOME%\sencha.jar" %*

Umieść go w folderze sencha, w moim przypadku jest

C:\Users\<YOUR USER>\bin\Sencha\Architect\Cmd\6.2.0.103

Następnym krokiem jest zmiana zmiennej środowiska PATHEXT. Zmień zmienne użytkownika, aby mieć jak najmniejszy wpływ.

Zmieniam się z

COM;.CMD;.EXE;.BAT;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

do

COM;.BAT;.EXE;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

Chodzi o to, aby system Windows uruchamiał najpierw pliki .bat niż pliki .exe. Jest to ważne, ponieważ w folderze sencha znajduje się już plik „sencha.exe”. Jeśli w wierszu poleceń wpiszesz „sencha”, zamiast „sencha.bat” uruchomi się „sencha.exe”.

To było jedyne rozwiązanie, które zadziałało, ponieważ jestem bardzo ograniczony, jeśli chodzi o uprawnienia.

Adilson Cabral
źródło
0

Mój system: - Windows 8.1

Środowiska Java

  • C: \ JavaEnvironment \ Java \ jdk1.8.0_161
  • C: \ JavaEnvironment \ Java \ jdk1.7.0_75

Niedawno zainstalowałem Oracle 11g XE i otrzymałem wspomniany komunikat o błędzie po uzyskaniu dostępu do polecenia „java” w wierszu polecenia.

Sprawdziłem moje zmienne środowiskowe, sprawdziłem sekwencję (jak wspomniano w poprzednich odpowiedziach) i wykryłem, że moja zmienna systemowa PATH miała następujący wpis jako pierwszy wpis:

C: \ OracleDatabase \ oraclexe \ app \ oracle \ product \ 11.2.0 \ server \ bin ;

Zmieniłem sekwencję i zdefiniowałem ścieżkę JDK jako pierwszy wpis:

wprowadź opis obrazu tutaj

Zreplikowałem tę samą zmianę w zmiennej użytkownika: ścieżka

wprowadź opis obrazu tutaj

Po zakończeniu powyższej czynności zrestartowałem wiersz poleceń i wykonałem polecenie java -version, a problem zniknął. Wyświetlał Java 8 jako aktualną wersję.

Philip Dilip
źródło
-1

Miałem podobny problem. Przeniesienie ścieżki JDK i JRE na początek zmiennej ścieżki rozwiązało problem (który ma pierwszeństwo przed tym, co jest obecne w System32)

Na przykład tutaj jest moje:

wprowadź opis obrazu tutaj

Ramesh
źródło
-2

Odinstaluj Java 8 z listy programów. Wykonując poniższe kroki: -

Na pulpicie kliknij menu Start (lub piłkę Start) w lewym dolnym rogu ekranu. Przejdź do Panelu sterowania. Kliknij Programy i funkcje. Wybierz Java8 i kliknij Odinstaluj

nitish verma
źródło
-2

Zabij wszystkie aplikacje związane z Javą w menedżerze zadań, a następnie usuń Java.exe, Javaw.exe i Jawaws.exe z C: \ windows \ System32

To powinno rozwiązać twój problem ... :)

Brijesh Rana
źródło
czy możesz wyjaśnić, jak to rozwiązałoby dany problem?
Muhammad Mamoor Khan
-3

po prostu to zrobiłem i zadziałało

HKLM> OPROGRAMOWANIE> JavaSoft> Java Runtime Environment

po prostu ręcznie zmień aktualną wersję na 1.7.

lol ... ale zadziałało!

user6180925
źródło