Ключ реестра "..." имеет значение "1.7", но требуется "1.6". Java 1.7 установлен и реестр указывает на него
Недавно моя команда разработчиков была переведена в удаленную среду разработки, где у нас нет полного доступа к серверам. Перед изменением мы имели JAR, который отлично работал на Java 1.7 x64 вместе с JRE 7. Когда мы перешли на новый сервер, JAR работал нормально, но затем один из администраторов сервера "обновил" нашу Java до более раннего и удалил тот, который мы использовали. Не спрашивай меня, почему, я не знаю. Я повторно установил Java 1.7 и удалил 1.6 вместе с JRE.
Во время выполнения возникает следующая проблема: ошибок сборки нет:
Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'
has value '1.7', but '1.6' is required.
Error: could not find java.dll
Error: could not find Java SE Runtime Environment.
Я запустил тот же JAR на своем ноутбуке без проблем. Как сервер, так и мой ноутбук имеют JDK 1.7 и JRE 7 в соответствующих% HOME% переменных и системных PATH. Я даже переустановил JRE 6 и поместил его позже в переменные PATH системной среды с тем же результатом.
Я также изменил реестр, чтобы посмотреть на 1.6, и это приводит к следующему: я посмотрел вверх, и похоже, что у него установлено несколько Javas (вернувшись к моей исходной проблеме):
Exception in thread "main" java.lang.UnsupportedClassVersionError: ... :
Unsupported major.minor version 51.0
Я был бы признателен за любое понимание, которое у вас есть, поскольку я просматривал различные форумы, но ничто, кажется, не имеет точно моей проблемы. Кроме того, это происходит и на другом сервере, который мы используем. Спасибо!
Обновление: не удастся перекомпилировать JAR на 1.6 или 1.7 и соответствовать JDK. Кроме того, почему в мире была бы более новая версия Java нарушена более старая скомпилированная версия?
Ответы
Ответ 1
Это происходит, когда вы каким-то образом путаете java. Вы пытаетесь запустить виртуальную машину java 6, где она обнаружила JRE 7. Это может показать эту проблему, даже если вы вводите в командной строке только java
или java -version
в неправильно сконфигурированной среде. JAR не является проблемой, за исключением очень маловероятного случая, когда код JAR ищет в реестре Windows для этого (что, вероятно, не является вашим случаем).
В моем случае у меня были java.exe
, javaw.exe
и javaws.exe
из Java 6 в папке Windows/System32
(не знаю, как это должно быть там). Остальные JDK и JRE, найденные в PATH внутри C:\Java\jdk_1.7.0\bin
. К сожалению,
Ответ 2
Просто была аналогичная ошибка при установке java 8 (jdk и jre) в системе, уже запущенной Java 7.
Ошибка: ключ реестра 'Software\JavaSoft\Java Runtime
Среда '\ CurrentVersion' имеет значение "1.8", но требуется "1.7".
Ошибка: не удалось найти java.dll Ошибка: не удалось найти среду выполнения Java SE.
Моя среда была настроена правильно (правильно определены путь и java_home), но проблема возникает из-за того, как работали pre-8 Java-установщики, то есть они использовали для копирования трех исполняемых файлов (java.exe, javaw.exe и javaws.exe) в системный каталог Windows. Они сохраняются, если не будут перезаписаны новой установкой до 8.
Однако установщик Java 8 вместо этого создает символические ссылки в новом каталоге C:\ProgramData\Oracle\Java\javapath, указывая на фактическое местоположение JRE 8.
Это означает, что вы фактически запустите старые 7 exes, но используйте новые 8 DLL.
Итак, решение состоит в том, чтобы просто удалить 3 Java exes, как указано выше, из системного каталога Windows.
Если вы используете 32-разрядную Java в 64-разрядной Windows, exes будет в Windows\SysWOW64, иначе в Windows\System32.
Ответ 3
Я удалил java файлы в windows/system32, и я также удалил c:\ProgramData\Oracle\Java\javapath из переменной PATH, потому что было 3 символических ссылки на java 1.8 файлы.
У меня был JDK 1.7 в переменной% JAVA_HOME% и java1.7/bin в PATH.
PS1: Моя проблема была между Java 1.7 и Java 1.8.
PS2: Я не могу добавить это как комментарий к Виктору, потому что у меня недостаточно очков.
Ответ 4
В меню START введите "regedit", чтобы открыть редактор реестра
Перейдите в раздел "HKEY_LOCAL_MACHINE" в левой части редактора/дерева меню реестра
Нажмите "ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ" в реестре "HKEY_LOCAL_MACHINE"
Нажмите "JavaSoft" в реестре "SOFTWARE"
Нажмите "Java Runtime Environment" в списке реестров "JavaSoft" здесь вы можете увидеть разные версии установленных java
Нажмите "Java Runtime Environment". С правой стороны вы получите 4-5 строк. Выберите "CurrentVersion" и щелкните правой кнопкой мыши (выберите вариант изменения). Измените версию на "1.7"
Теперь волшебство завершено
Ответ 5
Я не знаю, продолжает ли кто-нибудь следовать этому потоку, но у меня недавно возникла эта проблема, когда я попытался запустить ActiveMQ 5.10 в качестве службы Windows.
У меня не было набора путей JAVA_HOME.
У меня были установлены Java 6 и Java 7, но по умолчанию была версия v7. (т.е. если я открыл окно команд и набрал "java -version" ).
Вот где была подсказка: "java -version" вернула "виртуальную машину на базе Java HotSpot ™ TM" (сборка 23.1-b03, смешанный режим) ", но я установил службу Win32...
Оказывается, если вы используете оболочку Win32 на 64-битной машине, она каким-то образом решает использовать другую версию Java...
Итак, я решил удалить 32-разрядную версию оболочки и установить 64-разрядную версию.
отвращение на моей машине; просто привычка, я думаю... Но, к счастью, я решил проблему в конечном итоге...
Ответ 6
Для моего Win7
Парадокс был в java.exe и javaw.exe в папке System32.
Открыв эту папку, я не смог их увидеть, но используя поиск в меню "Пуск", я получаю ссылки на эти файлы, удаляя их. Next searsh дал мне ссылки на файлы из JAVA_HOME
магия)
Ответ 7
Перейдите в каталог с правильным java.exe
, то есть перейдите к требуемой версии JDK java.exe
cd C:/Program Files/Java/jdk1.7.0_25/bin
Запустите java.exe
из этого каталога, он имеет приоритет над настройками реестра и $PATH.
java -jar C:/installed/selenium-server-standalone-2.53.0.jar
Ответ 8
Я решил эту проблему, удалив Java 1.8
Ответ 9
Комбинация была скомпилирована как 1.6
. Вот почему вы получаете эту ошибку. Две резолюции:
1) Использовать Java 1.6
ИЛИ
2) Перекомпилируйте банку, совместимую с вашей средой 1.7
Ответ 10
Используя regedit, удалите записи, соответствующие java 7. Он будет работать.