Ошибка ключа реестра: версия Java имеет значение 1.8, но требуется 1.7.

Во время бега

sencha app build production

Я получаю следующую ошибку:

Ошибка: ключ реестра 'Software \ JavaSoft \ Java Runtime Environment' \ CurrentVersion '

имеет значение «1,8», но требуется «1,7». Ошибка: не удалось найти java.dll Ошибка: не удалось найти среду выполнения Java SE.

java -version, команда показывает следующее:

версия java "1.8.0_40" Java (TM) SE Runtime Environment (сборка 1.8.0_40-b26) 64-разрядная серверная виртуальная машина Java HotSpot (TM) (сборка 25.40-b25, смешанный режим)

Не могу найти неправильный путь. Любая идея?

----------------------- РЕДАКТИРОВАТЬ -------------------------- ----------------------

Примечание: я использую Windows 7 (64-разрядная версия).

Я попытался удалить и переустановить sencha touch cmd. Но все равно ошибка та же.

Я удалил все экземпляры версии java и переустановил последнюю, но проблема не исчезла.


person Anand Gupta    schedule 17.04.2015    source источник


Ответы (27)


Перепробовав более сотни приемов, наконец добился успеха.

Я удалил все java.exe, javaw.exe и javaws.exe из моих

  1. Windows\System32 и

  2. Windows\SysWOW64 папка. [Попробуйте выполнить шаг 2, если у вас 64-разрядная система (Win 7, 64-разрядная версия)]

person Anand Gupta    schedule 21.04.2015
comment
Пользователи Win 10 64Bit: удаление 3 файлов в System32 решит проблему. - person iTurki; 01.05.2017
comment
Но мы должны закрыть и снова открыть cmd и ввести java -version, чтобы просмотреть изменения ... Сработало как шарм, спасибо! - person Cristian B.; 09.06.2017
comment
@SkepticScribbler: такое случается, когда вы каким-то образом запутали саму java. Вы пытаетесь запустить виртуальную машину java 7, на которой обнаружена JRE 8. Это может показать эту проблему, даже если вы вводите в командной строке только java или java -version в неправильно настроенной среде. - person Anand Gupta; 15.09.2017
comment
@AnandGupta, это выстрел в темноте, а не решение - stackoverflow.com/a/53192247/1423507 - person masseyb; 08.11.2018

В моем случае (64-разрядная версия Windows 7) я просто сделал следующее:

  • Удалена ссылка на C: \ ProgramData \ Oracle \ Java \ javapath; из переменной среды Path.
  • Удалены файлы java, javaw и javaws из папки C: \ Windows \ System32.

После этого я закрыл все открытые консоли командной строки, снова открыл их и запустил java -version.

person aribeiro    schedule 17.11.2015
comment
У меня была эта проблема в Windows 10 при установке JDK5u14, JDK6u34, JDK7u51 и JDK8u121 (в таком порядке). Удаление файлов java из папки Windows было недостаточным. Также пришлось удалить путь из переменной среды PATH. - person uhm; 12.05.2017

  1. открыть regedit
  2. go to [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]
  3. измените значение CurrentVersion с "1,8" на "1,7"
person lucken    schedule 03.03.2016
comment
Спасибо. Это решило мою проблему. У меня нет прав на удаление чего-либо в SysWOW64. Простое изменение CurrentVersion через regedit решило мою проблему. - person Krish; 11.05.2016
comment
Гораздо более простое решение, чем пытаться удалить все посторонние версии java! - person Fred Andrews; 12.05.2018
comment
.. впрочем, это ничего не решает. Тогда установщик справедливо жалуется, что требуется java 8. - person user508402; 29.05.2019
comment
Спасибо, что это решение сработало, долгое время пытался решить эту ошибку. - person Abhishek Sawant; 18.07.2020
comment
Предупреждение: это может испортить ваши другие приложения, которые настроены на использование 1.8. - person Waqas; 09.11.2020

re: пользователи Windows

Нет. Не удаляйте ссылку на среду Javapath из переменной PATH.

Причина, по которой реестр не работает, заключается в том, что сценарий Oracle Javapath должен запускаться в последовательности PATH перед каталогами JRE и JDK - он отсортирует текущую версию:

поместите этот каталог в HEAD вашей переменной %PATH%:

C:\ProgramData\Oracle\Java\javapath

[или где бы он ни находился на рабочем столе]

поэтому ваш PATH будет выглядеть примерно так - например, мой

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

После этого вы увидите правильную текущую версию:

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)
person Andrew    schedule 05.04.2016
comment
Этот мне подходит. У меня Windows 7 (64-битная). Я переместил C: \ ProgramData \ Oracle \ Java \ javapath в начало PATH, как вы предложили. Спасибо! - person softwarelover; 30.08.2017
comment
Эй, это сработало! Не забудьте перезагрузить компьютер, спасибо. - person Sandoval0992; 10.07.2018

Мой опыт:

Я использую Windows 8.1, я понизил версию JAVA с 1.8 до 1.7, и я получал ту же ошибку.

Ошибка: ключ реестра Software \ JavaSoft \ Ja имеет значение 1,7, но требуется 1,8.

Я удалил java.exe, javaw.exe и javaws.ex e из C: \ Windows \ System32 папка, и это сработало для меня.

person RJ_Singh    schedule 01.11.2015
comment
Это не сработает, если в пути есть другие исполняемые файлы Java для других версий Java. - person Underverse; 27.07.2017

У меня была такая же проблема. Простое решение, которое сработало для меня, - переставить записи в PATH на JRE/JDK. Эта проблема начала появляться после установки JRE 8, чья установка поместила некоторые исполняемые файлы в System32 or SysWOW64 каталоги, эти исполняемые файлы испорчены. Чтобы решить проблему:

  1. Создайте переменную среды, указывающую на дом JDK как JAVA_HOME.

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

  2. Поместите запись %JAVA_HOME%\bin в начале переменной среды PATH. Добавление существующего значения PATH. Например:

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

person pratikch    schedule 26.02.2016
comment
это лучшее решение, если вы хотите, чтобы несколько версий java располагались рядом, и если у вас нет прав на изменение реестра и удаление файлов из папки windows \ system. - person Heinz; 07.02.2017

Я не удалял ни один из файлов java.exe, но изменил порядок моей системы - переменной "path" - так, чтобы она отражала% JAVA_HOME% \ bin в качестве первой записи. Это помогло.

person turnip424    schedule 09.07.2016

Ошибка явная ...

Ошибка: ключ реестра Software \ JavaSoft \ Java Runtime Environment \ CurrentVersion имеет значение 1.8, но требуется 1.7.

Ошибка: не удалось найти java.dll

Ошибка: не удалось найти среду выполнения Java SE.

... вы пытаетесь использовать исполняемый файл java.exe 1.7, в то время как раздел реестра HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment> CurrentVersion имеет значение 1.8.

Повторяющаяся тема предлагаемых решений заключается в том, что ошибка является ошибкой конфигурации. Ошибка может быть решена различными способами (например, реконфигурация пользовательской среды или удаление исполняемых файлов java со скрещенными пальцами в надежде, что у пользователей %PATH% существует еще один резервный вариант java.exe и что резервный вариант java.exe является правильным исполняемым файлом).

Правильное решение зависит от того, чего вы пытаетесь достичь: «Вы пытаетесь перейти с jdk-8 на jdk-7? Пытаетесь перейти на jdk-8? ...»

Шаги размножения

  1. установить jdk-7u80-windows-x64.exe

Примечания:

  • исполняемый файл java.exe, доступный пользователям %PATH%, установлен в C:\Windows\System32
  • установка не обновляет пользователей %PATH%
  • запись реестра HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment> CurrentVersion создается (среди прочего) со значением 1.7
  1. установить jdk-8u191-windows-x64.exe

Примечания:

  • пользователи %PATH% обновлены, чтобы включить C:\Program Files (x86)\Common Files\Oracle\Java\javapath в качестве первой записи
  • значение строковых записей реестра HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment> CurrentVersion обновляется до 1.8
  1. обновить переменную среды пользователей %PATH%, удалить C:\Program Files (x86)\Common Files\Oracle\Java\javapath

  2. в новой командной строке java -version

Ошибка: ключ реестра Software \ JavaSoft \ Java Runtime Environment \ CurrentVersion имеет значение 1.8, но требуется 1.7.

Ошибка: не удалось найти java.dll

Ошибка: не удалось найти среду выполнения Java SE.

Решение (я)

  1. Решение OP https://stackoverflow.com/a/29769311/1423507 - это "скрещенные пальцы и надежда, что существует резервный java.exe в пользователях %PATH% и что резервный исполняемый файл является правильным "подходом к ошибке. Учитывая шаги воспроизведения, удаление исполняемых файлов java.exe, javaw.exe и javaws.exe из C:\Windows\System32 (только в моем случае) приведет к тому, что у пользователей больше не будет java.exe присутствовать %PATH%, что приведет к ошибке 'java' is not recognized as an internal or external command, operable program or batch file., которая не является серьезным решением.

  2. отвечает https://stackoverflow.com/a/35775493/1423507 и https://stackoverflow.com/a/36516620/1423507, однако вы возвращаетесь к использованию java.exe 1.7 (например, обновите значение ключа реестра CurrentVersion, чтобы оно соответствовало найденной java.exe версии в юзерах %PATH%).

  3. Убедитесь, чтоjava.exe 1.8 - это первое, что было обнаружено у пользователей %PATH% (как вы это делаете, не имеет значения), то есть:

    • update the users %PATH% to include C:\Program Files (x86)\Common Files\Oracle\Java\javapath first (ensure that the executables in that directory are correct)
    • обновите пользователей %PATH%, включив сначала абсолютный путь к вашим двоичным файлам Java (set PATH="C:\Program Files\Java\jre1.8.0_191\bin;%PATH%")
    • установить переменные среды, специфичные для Java, и обновить ими %PATH% пользователей (set JAVA_HOME="C:\Program Files\Java"; set JRE_HOME=%JAVA_HOME%\jre1.8.0_191; set PATH=%JRE_HOME%\bin;%PATH%)
person Community    schedule 07.11.2018
comment
@whoever_that_downvotes - этот ответ нельзя улучшить без конструктивной обратной связи. Оставьте комментарий о том, почему, и возможно, вы сможете улучшить этот ответ на благо сообщества. - person masseyb; 31.10.2019

У меня была эта ошибка в некоторых службах Windows под управлением Java. В конце концов, на своей машине я попытался удалить другие версии java.

Оставил только 1.8 и теперь все работает.

person Menelaos    schedule 04.08.2019

Ответ aribeiro сработал для меня - с небольшими изменениями

  • Я удалил ссылку на C: \ ProgramData \ Oracle \ Java \ javapath; из переменной среды Path
  • Я сделал / path / to / jdkhome первой записью в моей переменной среды PATH. Я думаю, что это все, что нужно.
person abdel    schedule 16.02.2016

Как по мне на win7 64bit.

Скопируйте java.exe javaw.exe javaws.exe в папку C:\Program Files\Java\jre1.8.0_91\bin to the C:\Windows\System32.

а затем откройте cmd, введите 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)

Перед вышеуказанным убедитесь, что CurrentVersion реестра равно 1.8.

В меню ПУСК введите "regedit", чтобы открыть редактор реестра.

  1. Перейдите к «HKEY_LOCAL_MACHINE» в левом проводнике реестра / древовидном меню.
  2. Нажмите "ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ" в реестрах "HKEY_LOCAL_MACHINE"
  3. Щелкните "JavaSoft" в реестрах "ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ".
  4. Нажмите «Java Runtime Environment» в списке реестров «JavaSoft», здесь вы можете увидеть различные версии установленной java.
  5. Щелкните «Среда выполнения Java» - справа вы получите 4-5 строк. Пожалуйста, выберите «CurrentVersion» и щелкните правой кнопкой мыши (выберите вариант изменения), убедитесь, что версия - «1.8».
person Francis Bacon    schedule 10.05.2016
comment
Это действительно плохая идея. Папка двоичных файлов должна быть добавлена ​​в путь вместо перемещения файлов в папку, уже указанную в пути. Это может вызвать ужасную головную боль, если кому-то другому придется обновить java в системе и не знает об этом решении. И это как раз источник проблемы операции ... Вместо этого исправьте свой путь. - person Riwels; 21.06.2016
comment
Измените I just MOVE на I just COPY, и все будет в порядке. - person Matthieu; 24.08.2016

Мое решение этой проблемы пришло после того, как я прочитал и попробовал все вышеперечисленное.

В моем случае я попытался перейти на более раннюю версию Java, чтобы использовать распечатки в Apache ActiveMQ. После удаления всех версий Java и очистки реестра я получал ту же ошибку

Ошибка: ключ реестра Software \ JavaSoft \ Java Runtime Environment \ CurrentVersion имеет значение 1.7, но требуется 1.8 ».

В моем случае мне нужно было перейти к переменным среды, отредактировать путь, открыть местоположение javapath (C:\ProgramData\Oracle\Java\javapath), и вот оно - три файла (java.exe, javaw.exe, javaws.exe), которые остались от версии JRE8.

Установив этот факт, я просто переключил их на те же файлы из каталога C:\Windows\SysWOW64 (это были из версии JRE7), и все заработало отлично.

person MikeG    schedule 14.03.2017

После последнего автоматического обновления Java я не мог запустить Java из командной строки.

В моей переменной пути было 'C: \ ProgramData \ Oracle \ Java \ javapath;'

Мне не удалось выполнить cd в 'C: \ ProgramData \ Oracle \ Java \ javapath;' из окна командной строки, поскольку он не существует.

Я удалил C: \ ProgramData \ Oracle \ Java \ javapath; ' из переменной пути и заменил ее на 'C: \ Program Files \ Java \ jre1.8.0_141 \ bin;'

person user20150603    schedule 27.07.2017
comment
Это больше комментарий, чем ответ. Речь идет об очень специфическом инструменте, и очень ясно, что java действительно найдена. - person GhostCat; 27.07.2017

Вы должны определить свою папку jdk в переменной JAVA_HOME, добавить% JAVA_HOME% в свой путь к переменной

Удалите или измените имя вашего java.exe, javaw.exe и javaws в папке system32

выполните cmd.exe, java -version теперь возьмет новую версию, которую вы определили в JAVA_HOME.

person El mehdi AZROUR    schedule 15.01.2018

В дополнение к ответу Ананда Гупты убедитесь, что не используется никакая другая java, кроме той, которая вам нужна. Запустите which java (where java для Windows) и посмотрите, какие исполняемые файлы Java используются. Просто удалите те, которые вы не хотите использовать, а если нужного вам нет, добавьте его в PATH.

person Sergey K.    schedule 03.04.2020

Сначала у вас должна быть Java 7. Если у вас ее нет, сначала установите ее (я не знаю, что вы используете, Linux, Mac, yum, apt, homebrew, вы должны выяснить это сами).

Если у вас уже установлена ​​Java 7, запустите:

echo $JAVA_HOME

Результат должен быть примерно таким: /usr/lib/jvm/java-8-oracle. Рядом с этим каталогом вы должны увидеть java-7 каталог. После того, как вы его нашли, запустите

export JAVA_HOME=${java-7-dir}

Измените {java-7-dir} на путь к вашему каталогу. Затем вы можете запустить свою команду.

Это временное решение. Чтобы изменить его навсегда, поместите указанную выше команду в свой ~/.bashrc файл.

РЕДАКТИРОВАТЬ: если вы используете Windows, измените переменную среды JAVA_HOME на путь к каталогу установки Java 7.

person mtyurt    schedule 17.04.2015
comment
@AnandGupta Я добавил кейс для Windows. - person mtyurt; 17.04.2015
comment
В случае Linux вам необходимо указать путь к двоичному файлу Java в JAVA_HOME. Например, /usr/java/jdk1.5.0_07/bin/java. В случае Windows подойдет только установочный каталог. - person Aditya K; 17.04.2015

Мой небольшой вклад за то, что разделил ту же проблему с 64-битной версией Talend Open Studio.

  1. Запустить .. \ TOS_DI-Win32-20150702_1326-V6.0.0 \ TOS_DI-win-x86_64.exe вручную (без ссылки на меню запуска Windows)
  2. и появляется это сообщение об ошибке реестра

Чтобы решить эту проблему, удалите все файлы java.exe, javaw.exe и javaws.exe в c: \ ProgramData \ Oracle \ Java \ javapath \

и TOS правильно запускаются с 64-битной версией!

person Undigo Factory    schedule 09.09.2015

Удалите его из системного пути:

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

И это решит проблему при обновлении версии Java с 1.7 до 1.8.

person user5645373    schedule 06.12.2015
comment
Не могли бы вы нам сказать почему? - person Vinay Prajapati; 06.12.2015

Где-то существует другой java.exe из jre версии 1.8, который находится в «пути», вы должны найти и удалить его, если это возможно. это может быть в пользовательских временных данных для приложений, которым требуется jre.

person masoudifar    schedule 02.11.2016

Измените системные переменные JAVA_BIN и JAVA_HOME, а затем перезапустите систему или, возможно, повторно войдите. У вас возникла эта ошибка, потому что это все еще путь jdk1.7. В Windows это выглядит так:  введите описание изображения здесь

person Tiina    schedule 18.01.2017

Просто установите Java SE Runtime Environment JRE 7!

Теперь вы видите «java 7» и «java 8» в «Программы и компоненты» на «Панели управления».

У меня это сработало.

person Tenesi    schedule 07.07.2017

Одним из возможных решений этой проблемы является добавление в папку Sencha CMD файла bat, как предлагается в этом потоке Ошибка Sencha Cmd 5 + Java 8.

Пакет будет иметь имя sencha.bat с таким кодом:

@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" %*

Поместите его в папку сенча, в моем случае это

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

Следующим шагом является изменение переменной среды PATHEXT. Измените пользовательские переменные, чтобы иметь наименьшее возможное влияние.

Я перехожу с

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

to

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

Идея состоит в том, чтобы Windows запускала файлы .bat в первую очередь, чем файлы .exe. Это важно, потому что в папке sencha уже есть файл «sencha.exe». А в командной строке, если вы наберете «sencha», он выполнит «sencha.exe» вместо «sencha.bat».

Это было единственное решение, которое сработало, потому что я очень ограничен в том, что касается разрешений.

person Adilson Cabral    schedule 23.04.2018

Моя система: - Windows 8.1

Среды Java

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

Я недавно установил Oracle 11g XE и получил указанное сообщение об ошибке при доступе к команде «java» в командной строке.

Я проверил свои переменные среды, проверил последовательность (как упоминалось в предыдущих ответах) и обнаружил, что моя системная переменная PATH имеет следующую запись в качестве первой записи:

C: \ OracleDatabase \ oraclexe \ app \ oracle \ product \ 11.2 .0 \ сервер \ bin;

Я изменил последовательность и определил путь JDK как первую запись:

введите здесь описание изображения

Я воспроизвел то же изменение в пользовательской переменной: путь

введите здесь описание изображения

После завершения вышеуказанного действия я перезапустил командную строку и выполнил команду java -version, и проблема исчезла. Он отображал Java 8 как текущую версию.

person Philip Dilip    schedule 29.07.2018

У меня была аналогичная проблема. Перемещение пути JDK и JRE в начало переменной пути решило проблему (которая имеет приоритет над тем, что присутствует в System32)

Например, вот мой:

введите описание изображения здесь

person Ramesh    schedule 12.05.2017

Удалите Java 8 из списка программ. ПОСЛЕ следующих шагов: -

На рабочем столе щелкните меню «Пуск» (или «Пуск») в левом нижнем углу экрана. Зайдите в Панель управления. Щелкните «Программы и компоненты». Выберите Java8 и нажмите Удалить.

person nitish verma    schedule 10.06.2016

Убейте все приложения, связанные с java, в диспетчере задач, а затем удалите Java.exe, Javaw.exe и Jawaws.exe из C: \ windows \ System32

Это должно решить вашу проблему ... :)

person Community    schedule 24.08.2017
comment
не могли бы вы прояснить, как это решит проблему? - person Muhammad Mamoor Khan; 12.10.2017

просто сделал это, и это сработало

HKLM> ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ> JavaSoft> Среда выполнения Java

просто вручную измените текущую версию на 1.7.

лол ... но это сработало!

person user6180925    schedule 09.04.2016