Ошибка ключа реестра: версия 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.