Помилка ключа реєстру: версія 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) Java HotSpot (TM) 64-бітна серверна віртуальна машина (збірка 25.40-b25, змішаний режим)

Не можу знайти, де шлях йде не так. Будь-яка ідея?

----------------------- РЕДАКТУВАТИ -------------------------- ----------------------

Примітка . Я використовую Windows 7 (64 біт).

Я спробував видалити cmcha sencha touch і перевстановити. Але все-таки та сама помилка.

Я видалив усі екземпляри версії Java і встановив останню, проте проблема все ще залишається.

Відповіді:


294

Спробувавши більше сотні трюків, нарешті досяг успіху.

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

  1. Windows\System32 і

  2. Windows\SysWOW64 папку. [Спробуйте крок 2, якщо у вас система x64 (Win 7 64 біт)]


11
Win 10 64Bit користувачів: видалення 3 файлів у Windows System32 вирішить проблему.
iTurki

4
Але ми повинні закрити та знову відкрити cmd та набрати java -version, щоб переглянути зміни ... Працював як шарм, дякую!
Крістіан Б.

1
@SkepticScribbler: Це трапляється, коли ви якось переплутали саму Java. Ви намагаєтеся запустити віртуальну машину Java 7, де вона знайшла JRE 8. Це може показати цю проблему, навіть якщо ви введете в командний рядок просто java або java-версія у неправильно налаштованому середовищі.
Ананд Гупта

@AnandGupta це постріл в темряві, а не вирішення - stackoverflow.com/a/53192247/1423507
masseyb

39

У моєму випадку (64-розрядна версія Windows 7) я просто зробив наступне:

  • Видалено посилання на C: \ ProgramData \ Oracle \ Java \ javapath; із змінної середовища Path
  • Видалені файли Java , javaw та javaws з папки C: \ Windows \ System32

Згодом я закрив усі відкриті консолі командного рядка, знову відкрив їх і запустив java -версію .


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

32
  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

Дякуючи, що це рішення спрацювало, намагалося вирішити цю помилку протягом тривалого часу
Абхішек Савант,

19

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)

Цей працює для мене. У мене 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

У мене була та сама проблема. Просте рішення, яке працювало для мене, - це переставити записи у 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%


3
це найкраще рішення, якщо ви хочете зберігати кілька версій Java поряд, і якщо у вас немає прав змінювати реєстр та видаляти файли з папки windows \ system.
Хайнц

3

Я не видалив жодного файлу java.exe, але змінив порядок моєї системної змінної "шлях" - так, щоб вона відображала% 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.exe1.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

Змініть я просто переїжджаю на я просто КОПІЮЮ, і вам буде добре йти.
Матьє

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;'

Я не зміг компакт-диску в '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 у вашій системі папок32

виконайте 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файлу.

EDIT: Якщо ви використовуєте 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
Скажіть, чому?
Vinay Prajapati

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

Одним із можливих рішень цієї проблеми є додавання до папки CMD Sencha файлу 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" %*

Помістіть його в папку 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 як перший запис:

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

Я відтворив ту ж зміну на User Variable: Path

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

Закінчивши вищезазначену діяльність, я перезапустив командний рядок і виконав команду 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.