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


91

Во время пробежки

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 и переустановить ее. Но все та же ошибка.

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

Ответы:


294

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

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

  1. Windows\System32 а также

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


11
Пользователи Win 10 64Bit: удаление 3 файлов System32решит проблему.
— iTurki

4
Но мы должны закрыть и снова открыть cmd и ввести java -version, чтобы просмотреть изменения ... Сработало как шарм, спасибо!
— Cristian B.

1
@SkepticScribbler: такое случается, когда вы каким-то образом запутали саму java. Вы пытаетесь запустить виртуальную машину java 7, на которой обнаружена JRE 8. Это может показать эту проблему, даже если вы введете в командной строке только java или java -version в неправильно настроенной среде.
— Ананд Гупта

@AnandGupta, это выстрел в темноте, а не решение - stackoverflow.com/a/53192247/1423507
— masseyb

39

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

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

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


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

31
  1. открыть regedit
  2. перейти к [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]
  3. изменить значение CurrentVersionс «1,8» на «1,7»

2
Спасибо. Это решило мою проблему. У меня нет прав на удаление чего-либо в SysWOW64. Простое изменение CurrentVersion через regedit решило мою проблему.
— Криш

1
Намного более простое решение, чем пытаться удалить все посторонние версии java!
— Фред Эндрюс

.. однако это ничего не решает. Тогда установщик справедливо жалуется, что требуется java 8.
— user508402

Спасибо, что это решение сработало, долгое время пытался решить эту ошибку
— Абхишек Савант

Предупреждение: это может испортить ваши другие приложения, которые настроены на использование 1.8.
— Вакас,

19

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

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

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

поместите этот каталог в ГОЛОВУ вашей %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)

Этот мне подходит. У меня Windows 7 (64-битная). Я переместил C: \ ProgramData \ Oracle \ Java \ javapath в начало PATH, как вы предложили. Благодарность!
— Softwarelover

1
Эй, это сработало! Не забудьте перезагрузить компьютер, спасибо.
— Sandoval0992

12

Мой опыт:

Я использую 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, и у меня это сработало.


Это не сработает, если в пути есть другие исполняемые файлы Java для других версий Java.
— Underverse

9

У меня была такая же проблема. Простое решение, которое сработало для меня, - переставить записи в файле PATHfor 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%


3
это лучшее решение, если вы хотите, чтобы несколько версий java располагались рядом, и если у вас нет права изменять реестр и удалять файлы из папки windows \ system.
— Heinz

3

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


3

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

Ошибка: ключ реестра 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.exeв пользователей %PATH%и о том , что запасной вариант 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.exe1.7 (например, обновите значение CurrentVersionключа реестра, чтобы оно соответствовало java.exeверсии, найденной в пользователи %PATH%).

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

    • обновите пользователей, %PATH%чтобы включить их C:\Program Files (x86)\Common Files\Oracle\Java\javapathпервыми (убедитесь, что исполняемые файлы в этом каталоге верны)
    • обновите пользователей, %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%)

@whoever_that_downvotes - этот ответ нельзя улучшить без конструктивной обратной связи. Оставьте комментарий относительно «почему» и, возможно, вы сможете улучшить этот ответ на благо сообщества.
— masseyb

2

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

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


1

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

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

1

Как по мне на 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 Runtime Environment» - справа вы получите 4-5 строк. Выберите «CurrentVersion» и щелкните правой кнопкой мыши (выберите вариант изменения), убедитесь, что версия - «1.8».

Это действительно плохая идея. Папка двоичных файлов должна быть добавлена ​​в путь вместо перемещения файлов в папку, уже указанную в пути. Это может вызвать ужасную головную боль, если кто-то другой должен обновить java в системе и не знает об этом «решении». И это как раз источник проблемы операции ... Вместо этого исправьте свой путь.
— Riwels

Измените « Я просто ДВИЖУСЯ на Я просто КОПИРУЮ», и все будет хорошо.
— Matthieu

1

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

В моем случае я попытался перейти на более раннюю версию 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версии), и все заработало отлично.


1

После последнего автоматического обновления 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;'


Это больше комментарий, чем ответ. Речь идет об очень конкретном инструменте, и очень ясно, что java действительно найдена.
— GhostCat

1

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

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

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


1

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


0

Сначала у вас должна быть 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.


@AnandGupta Я добавил чехол для Windows.
— мтюрт

В случае Linux вам необходимо указать путь к двоичному файлу Java в JAVA_HOME. Например, /usr/java/jdk1.5.0_07/bin/java. В случае Windows подойдет только установочный каталог.
— Aditya K

0

Мой небольшой вклад за то, что разделил ту же проблему с 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-битной версией!


0

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

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

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


1
Не могли бы вы нам сказать почему?
— Винай Праджапати

0

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


0

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


0

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

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

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


0

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

Пакет будет иметь имя 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" %*

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

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

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

Я перехожу с

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

к

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

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

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


0

Моя система: - 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 \ server \ bin ;

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

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

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

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

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


-1

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

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

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


-2

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

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


-2

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

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


не могли бы вы прояснить, как это решит проблему?
— Мухаммад Мамур Хан

-3

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.