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

<p>во время бега </p><pre><code>sencha app build production </code></pre><p>я получаю следующую ошибку:</p><blockquote> <p>ошибка: ключ реестра 'software\javasoft\java runtime окружающая среда '\ currentversion'</p> <p>имеет значение «1,8», но требуется «1,7». ошибка: не удалось найти java.dll ошибка: не удалось найти среду выполнения java se.</p> </blockquote><p><code>java -version</code>, команда показывает следующее:</p><p>версия java "1.8.0\_40" среда выполнения java (tm) se (сборка 1.8.0\_40-b26) 64-разрядный сервер java hotspot (tm) vm (сборка 25.40-b25, смешанный режим )</p><p>не в состоянии найти, где путь идет не так, как надо. любая идея?</p><p>----------------------- редактировать -------------------------- ----------------------</p><p><strong> примечание </strong>: я использую windows 7 (64 бит). </p><p>я попытался удалить sencha touch cmd и переустановить. но все та же ошибка.</p><p>я удалил все экземпляры java-версии и установил последнюю версию, проблема остается.</p>

<p>перепробовав более сотни трюков, наконец-то добился успеха.</p><p>я удалил все <code>java.exe</code>, <code>javaw.exe</code> и <code>javaws.exe</code> из моего</p><ol> <li><p><code>windows\system32</code> и</p></li> <li><p><code>windows\syswow64</code> папка. [попробуйте шаг 2, если у вас система x64 (win 7 64 бит)]</p></li> </ol>

<ol> <li>открытое regedit</li> <li>перейти к <code>[hkey\_local\_machine\software\javasoft\java runtime environment]</code></li> <li>изменить значение <code>currentversion</code> с «1.8» на «1.7»</li> </ol>

<p>в моем случае (windows 7 64-bit) я просто сделал следующее:</p><ul> <li>удалена ссылка на<strong> c:\programdata\oracle\java\javapath; </strong>из переменной окружения <em>path</em></li> <li>удаленные файлы<strong> java </strong>,<strong> javaw </strong>и<strong> javaws </strong>из папки <em>c:\windows\system32</em></li> </ul><p>после этого я закрыл все открытые консоли командной строки, снова открыл их и запустил <em>java -version</em>.</p>

<p>re: пользователи windows</p><p>нет. не удаляйте ссылку на среду javapath из переменной path.</p><p>причина, по которой реестр не работал, заключается в том, что сценарий oracle javapath должен выполняться в последовательности path перед каталогами jre & jdk - он будет сортировать текущую версию:</p><p>поместите этот каталог в голову вашей переменной <code>%path%</code>:</p><pre><code>c:\programdata\oracle\java\javapath </code></pre><p>[или где бы он ни был на вашем рабочем столе]</p><p>так что ваш path будет выглядеть примерно так - мой например</p><pre><code>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 </code></pre><p>затем вы увидите правильную текущую версию:</p><pre><code>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) </code></pre>

<p>мой опыт: </p><p>я использую windows<strong> 8.1 </strong>, и я снизил версию java с 1,8 до 1,7, и я получил ту же ошибку.</p><p><strong> ошибка: ключ реестра 'software\javasoft\ja имеет значение' 1,7 ', но требуется' 1,8 '. </strong></p><p>я удалил папку<strong> java.exe </strong>,<strong> javaw.exe </strong>и<strong> javaws.ex </strong>e из<strong> c:\windows\system32 </strong>, и это сработало для меня.</p>

<p>у меня была такая же проблема. простое решение, которое сработало для меня, заключается в перестановке записей в <code>path</code> для <code>jre/jdk</code>. эта проблема начала появляться после установки <code>jre 8</code>, чья установка поместила некоторые исполняемые файлы в каталоги <code>system32 or syswow64</code>, эти исполняемые файлы испортились. чтобы решить проблему:</p><ol> <li><p>создайте переменную среды, указывающую на jdk home как <code>java\_home</code>.</p> <p><code>set java\_home=c:\progra~1\java\jdk1.8.0\_45</code></p></li> <li><p>поместите запись <code>%java\_home%\bin</code> при запуске в переменную окружения path. добавление существующего значения <code>path</code>. например: </p> <p><code>path=c:\program files\java\jdk1.8.0\_45\bin;%path%</code></p></li> </ol>

<p>ошибка явная ...</p><blockquote> <p>ошибка: ключ реестра 'software\javasoft\java runtime environment'\currentversion 'имеет значение' 1,8 ', но требуется' 1,7 '.</p> <p>ошибка: не удалось найти java.dll</p> <p>ошибка: не удалось найти среду выполнения java se.</p> </blockquote><p>... вы пытаетесь использовать исполняемый файл <code>java.exe</code> 1.7, а ключ реестра <code>hkey\_local\_machine\software\javasoft\java runtime environment</code>> <code>currentversion</code> имеет значение 1.8.</p><p>повторяющаяся тема предлагаемых решений заключается в том, что ошибка является <strong>ошибка конфигурации</strong>. ошибка может быть решена различными способами (например, реконфигурирование среды пользователя или удаление исполняемых файлов java со скрещенными пальцами и надежда на то, что существует другой запасной вариант <code>java.exe</code> в пользовательских <code>%path%</code> и что запасной вариант <code>java.exe</code> является правильным исполняемым файлом).</p><p>решение <em>правильное</em> зависит от того, чего вы пытаетесь достичь: «пытаетесь ли вы перейти с jdk-8 на jdk-7? пытаетесь перейти на jdk-8? ...»</p><h2>шаги воспроизведения</h2><ol> <li>установить jdk-7u80-windows-x64.exe</li> </ol><blockquote> <p>заметки:</p> <ul> <li>исполняемый файл <code>java.exe</code>, доступный пользователям <code>%path%</code>, установлен в <code>c:\windows\system32</code></li> <li>установка не обновляет пользователей <code>%path%</code></li> <li>запись реестра строк <code>hkey\_local\_machine\software\javasoft\java runtime environment</code>> <code>currentversion</code> создается (среди прочего) со значением <code>1.7</code></li> </ul> </blockquote><ol start="2"> <li>установить jdk-8u191-windows-x64.exe</li> </ol><blockquote> <p>заметки:</p> <ul> <li><code>%path%</code> пользователей обновлен и теперь включает <code>c:\program files (x86)\common files\oracle\java\javapath</code> в качестве первой записи</li> <li>значение записи реестра строки <code>hkey\_local\_machine\software\javasoft\java runtime environment</code>> <code>currentversion</code> обновляется до <code>1.8</code></li> </ul> </blockquote><ol start="3"> <li><p>обновите переменную среды <code>%path%</code> пользователей, удалите <code>c:\program files (x86)\common files\oracle\java\javapath</code></p></li> <li><p>в новой командной строке <code>java -version</code></p></li> </ol><blockquote> <p>ошибка: ключ реестра 'software\javasoft\java runtime environment'\currentversion ' имеет значение «1,8», но требуется «1,7».</p> <p>ошибка: не удалось найти java.dll</p> <p>ошибка: не удалось найти среду выполнения java se.</p> </blockquote><h2>решение (s)</h2><ol> <li><p>решение op <a href="https://stackoverflow.com/a/29769311/1423507">https://stackoverflow.com/a/29769311/1423507</a> - это «скрещенные пальцы, и мы надеемся, что существует резервный <code>java.exe</code> в пользовательских <code>%path%</code> и что резервный исполняемый файл корректен», подход к ошибке. учитывая действия по воспроизведению, удаление исполняемых файлов <code>java.exe</code>, <code>javaw.exe</code> и <code>javaws.exe</code> из <code>c:\windows\system32</code> (только в моем случае) приведет к тому, что <code>java.exe</code> больше не будет присутствовать в <code>%path%</code> пользователей, что приведет к ошибке <code>'java' is not recognized as an internal or external command, operable program or batch file.</code>, которая не является большой проблемой.</p></li> <li><p>ответы <a href="https://stackoverflow.com/a/35775493/1423507">https://stackoverflow.com/a/35775493/1423507</a> и <a href="https://stackoverflow.com/a/36516620/1423507">https://stackoverflow.com/a/36516620/1423507</a> работают, однако вы возвращаетесь к использованию <code>java.exe</code> 1.7 (например, обновите значение ключа реестра <code>currentversion</code> для соответствия версии <code>java.exe</code>, найденной в <code>%path%</code> пользователей).</p></li> <li><p>убедитесь, что <code>java.exe</code> 1.8 является первым найденным среди пользователей <code>%path%</code> (как вы это делаете, не имеет значения), т.е. </p> <ul> <li>обновите <code>%path%</code> пользователей, чтобы сначала включить <code>c:\program files (x86)\common files\oracle\java\javapath</code> (убедитесь, что исполняемые файлы в этом каталоге правильные)</li> <li>обновите <code>%path%</code> пользователей, чтобы сначала включить абсолютный путь к вашим двоичным файлам java (<code>set path="c:\program files\java\jre1.8.0\_191\bin;%path%"</code>)</li> <li>установите переменные среды, специфичные для java, и обновите <code>%path%</code> пользователей с ними (<code>set java\_home="c:\program files\java"</code>; <code>set jre\_home=%java\_home%\jre1.8.0\_191</code>; <code>set path=%jre\_home%\bin;%path%</code>)</li> </ul></li> </ol>

<p>я не удалил ни один из файлов java.exe, но изменил порядок своей системы - переменную «path», чтобы она отражала% java\_home%\bin в качестве первой записи…. это помогло.</p>

<p>после последнего автоматического обновления java я не смог запустить java из командной строки.</p><p>моя переменная пути содержала «c:\programdata\oracle\java\javapath;»</p><p>я не мог перейти в 'c:\programdata\oracle\java\javapath;' из окна командной строки, так как он не существует.</p><p>я удалил c:\programdata\oracle\java\javapath; ' из переменной пути и заменил его на «c:\program files\java\jre1.8.0\_141\bin;»</p>

<p>мое решение этой проблемы пришло после прочтения и пробования всего вышеперечисленного.</p><p>в моем случае я пытался понизить java, чтобы использовать распечатки в <code>apache activemq</code>. после удаления всех версий java и очистки реестра я получил ту же ошибку</p><blockquote> <p>ошибка: ключ реестра 'software\javasoft\java runtime environment'\currentversion ' имеет значение «1,7», но требуется «1,8». "</p> </blockquote><p>в моем случае мне нужно было перейти к переменным окружения, отредактировать путь, открыть местоположение javapath (<code>c:\programdata\oracle\java\javapath</code>) и вот оно - три файла (<code>java.exe</code>, <code>javaw.exe</code>, <code>javaws.exe</code>), которые остались от версии jre8. </p><p>после установления этого факта я просто переключил их с теми же файлами из каталога <code>c:\windows\syswow64</code> (они были из версии <code>jre7</code>), и все это отлично работало.</p>

<p>что касается меня на win7 64bit.</p><p>скопируйте java.exe javaw.exe javaws.exe в папку <code>c:\program files\java\jre1.8.0\_91\bin to the c:\windows\system32.</code></p><p>и затем откройте cmd, введите java -version.</p><pre><code>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) </code></pre><p>перед этим убедитесь, что currentversion реестра равен 1,8</p><p>в меню «пуск» введите «regedit», чтобы открыть редактор реестра.</p><ol> <li>перейдите к «hkey\_local\_machine» в левой части реестра проводник/древовидное меню</li> <li>нажмите «программное обеспечение» в реестрах «hkey\_local\_machine»</li> <li>нажмите «javasoft» в реестре «программное обеспечение».</li> <li>нажмите «java runtime environment» в списке «javasoft» реестров, здесь вы можете увидеть различные версии установленной java</li> <li>нажмите «java runtime environment» - с правой стороны вы получите 4-5 строк. пожалуйста, выберите «currentversion» и щелкните правой кнопкой мыши (выберите изменить вариант), чтобы убедиться, что версия «1.8»</li> </ol>

<p>вы должны определить вашу папку jdk в переменной java\_home, добавить% java\_home% в путь к вашей переменной</p><p>удалите или измените имя вашего java.exe, javaw.exe и javaws в вашей папке system32 </p><p>выполните cmd.exe, java-версия теперь принимает новую версию, определенную вами в java\_home.</p>

<p>ответ aribeiro сработал для меня - с небольшими изменениями</p><ul> <li>я удалил ссылку на c:\programdata\oracle\java\javapath; из переменной окружения path</li> <li>я сделал/path/to/jdkhome как первую запись в моей переменной окружения path. я думаю, что только это все, что нужно.</li> </ul>

<p>сначала у вас должна быть java 7. если у вас ее нет, сначала установите ее (я не знаю, что вы используете, linux, mac, yum, apt, homebrew, вы должны узнать сами).</p><p>если у вас уже есть java 7, запустите:</p><pre><code>echo $java_home вывод должен быть примерно таким: /usr/lib/jvm/java-8-oracle. рядом с этим каталогом вы должны увидеть каталог java-7. после того как вы нашли его, запустите export java_home=${java-7-dir} </code></pre><p>измените <code>{java-7-dir}</code>, указав путь к каталогу. тогда вы можете запустить свою команду.</p><p><strong> это только временное решение. </strong>чтобы изменить его навсегда, поместите указанную выше команду в свой файл <code>~/.bashrc</code>.</p><p><strong> правка: если вы используете windows </strong>, измените переменную окружения <code>java\_home</code> на путь к каталогу установки java 7.</p>

<p>пожалуйста, измените системную переменную java\_bin и java\_home, а затем перезапустите систему или, возможно, перезапустите. вы получаете эту ошибку, потому что это все еще путь jdk1.7. на окнах это так: <a href="https://i.stack.imgur.com/qzfvo.png"> <img src="https://i.stack.imgur.com/qzfvo.png" alt="enter image description here"> </a> </p>

<p>просто установите java se runtime environment jre 7!</p><p>теперь вы видите «java 7» и «java 8» в «программы и компоненты» в «панели управления»</p><p>это сработало для меня.</p>

<p>мой короткий вклад, для того, чтобы поделиться той же проблемой с 64-битной версией talend open studio.</p><ol> <li>запустите ..\tos\_di-win32-20150702\_1326-v6.0.0\tos\_di-win-x86\_64.exe вручную (не связывайте меню запуска windows)</li> <li>и это сообщение об ошибке реестра появляется</li> </ol><p>чтобы решить эту проблему, удалите все файлы java.exe, javaw.exe и javaws.exe в каталоге c:\programdata\oracle\java\javapath \</p><p>и tos правильно начать с 64-битной версии!</p>

<p>одним из возможных решений этой проблемы является добавление в папку sencha cmd файла bat, как предлагается в этом потоке <a href="https://stackoverflow.com/questions/27786159/sencha-cmd-5-java-8-error">sencha cmd 5 + java 8 error</a> .</p><p>пакет будет иметь имя «sencha.bat» с этим кодом:</p><pre><code>@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" %* </code></pre><p>поместите его в папку sencha, в моем случае это</p><pre><code>c:\users\<your user>\bin\sencha\architect\cmd\6.2.0.103 </code></pre><p>следующим шагом является изменение переменной окружения pathext. изменяйте пользовательские переменные, чтобы иметь как можно меньшее влияние.</p><p>я меняю с</p><pre><code>com;.cmd;.exe;.bat;.vbs;.vbe;.js;.jse;.wsf;.wsh;.msc </code></pre><p>в</p><pre><code>com;.bat;.exe;.cmd;.vbs;.vbe;.js;.jse;.wsf;.wsh;.msc </code></pre><p>идея состоит в том, чтобы windows сначала запускала файлы .bat, а не файлы .exe. это важно, потому что в папке sencha уже есть файл "sencha.exe". и в командной строке, если вы введете «sencha», он будет выполнять «sencha.exe» вместо «sencha.bat».</p><p>это было единственное решение, которое работало, потому что я очень ограничен, когда дело доходит до разрешений.</p>

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

<p>удалите его из системного пути: </p><pre><code>%systemroot%\system32;%systemroot%;%systemroot%\system32\wbem </code></pre><p>и это решит проблему при обновлении версии java с 1.7 до 1.8</p>

<p>моя система: - windows 8.1</p><p>среды java</p><ul> <li>c:\javaenvironment\java\jdk1.8.0\_161</li> <li>c:\javaenvironment\java\jdk1.7.0\_75</li> </ul><p>я недавно установил oracle 11g xe и получил упомянутое сообщение об ошибке при обращении к команде «java» в командной строке.</p><p>я проверил свои переменные окружения, проверил последовательность (как упомянуто в предыдущих ответах) и обнаружил, что моя системная переменная path имеет следующую запись в качестве первой записи:<br><br>. .\_\_ c:\oracledatabase\oraclexe\приложение\oracle\продукт\11.2.0\сервер\bin; </p><p>я изменил последовательность и определил путь jdk в качестве первой записи:<br></p><p> <a href="https://i.stack.imgur.com/aumga.png"> <img src="https://i.stack.imgur.com/aumga.png" alt="enter image description here"> </a> <br></p><p>я реплицировал то же изменение на переменную пользователя: путь</p><p> <a href="https://i.stack.imgur.com/lrbxs.png"> <img src="https://i.stack.imgur.com/lrbxs.png" alt="enter image description here"> </a> <br></p><p>после завершения вышеуказанного действия я перезапустил команду prompt и выполнил команду java -version, и проблема исчезла. он отображал java 8 в качестве текущей версии.</p>