it-swarm.com.ru

Ключ реестра Ошибка: версия Java имеет значение "1,8", но требуется "1,7"

Во время бега 

sencha app build production

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

Ошибка: ключ реестра 'Software\JavaSoft\Java Runtime Окружающая среда '\ CurrentVersion'

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

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

Версия Java "1.8.0_40" Среда выполнения Java (TM) SE (сборка 1.8.0_40-b26) 64-разрядный сервер Java HotSpot (TM) VM (сборка 25.40-b25, смешанный режим )

Не в состоянии найти, где путь идет не так, как надо. Любая идея?

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

Примечание : Я использую Windows 7 (64 бит). 

Я попытался удалить Sencha Touch CMD и переустановить. Но все та же ошибка.

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

70
Anand Gupta

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

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

  1. Windows\System32 и

  2. Windows\SysWOW64 папка. [Попробуйте шаг 2, если у вас система x64 (Win 7 64 бит)]

240
Anand Gupta
  1. открытое regedit
  2. перейти к [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]
  3. изменить значение CurrentVersion с «1.8» на «1.7»
29
lucken

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

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

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

29
aribeiro

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)
18
Andrew

Мой опыт: 

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

11
Raj

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

  1. Создайте переменную среды, указывающую на JDK home как 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%

7
pratikch

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

Ошибка: ключ реестра '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 со скрещенными пальцами и надежда на то, что существует другой запасной вариант 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.

Решение (s)

  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% (как вы это делаете, не имеет значения), т.е. 

    • обновите %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%)
3
masseyb

Я не удалил ни один из файлов Java.exe, но изменил порядок своей системы - переменную «path», чтобы она отражала% Java_HOME%\bin в качестве первой записи…. Это помогло.

2
turnip424

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

Моя переменная пути содержала «C:\ProgramData\Oracle\Java\javapath;»

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

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

1
user20150603

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

В моем случае я пытался понизить 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
MikeG

Что касается меня на 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»
1
Francis Bacon

Вы должны определить вашу папку jdk в переменной Java_HOME, Добавить% Java_HOME% в путь к вашей переменной

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

выполните cmd.exe, Java-версия теперь принимает новую версию, определенную вами в Java_HOME.

1
smoka

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

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

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

0
mtyurt

Пожалуйста, измените системную переменную Java_BIN и Java_HOME, а затем перезапустите систему или, возможно, перезапустите. Вы получаете эту ошибку, потому что это все еще путь jdk1.7. На окнах это так:  enter image description here

0
Tiina

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

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

Это сработало для меня.

0
Tenesi

Мой короткий вклад, для того, чтобы поделиться той же проблемой с 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
Undigo Factory

Одним из возможных решений этой проблемы является добавление в папку 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
Adilson Cabral

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

0
masoudifar

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

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

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

0
user5645373

Моя система: - 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\приложение\Oracle\продукт\11.2.0\сервер\Bin; 

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

 enter image description here

Я реплицировал то же изменение на переменную пользователя: путь

 enter image description here

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

0
Philip Dilip