Ключ реестра "..." имеет значение "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. Он будет работать.