Моя команда разработчиков недавно была вынуждена перейти в удаленную среду разработки, где у нас нет полного доступа к серверам. До изменения у нас был 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, и это привело к следующему, которое я просмотрел, и, похоже, из-за установки нескольких Jav (что привело к моей исходной проблеме):
Exception in thread "main" java.lang.UnsupportedClassVersionError: ... :
Unsupported major.minor version 51.0
Я был бы признателен за любое понимание, которое у вас есть, поскольку я просматривал различные форумы, но, похоже, ни у кого нет именно моей проблемы. Кроме того, это произошло на другом сервере, который мы используем. Спасибо!
Обновление: не повезло с перекомпиляцией JAR до 1.6 или 1.7 и соответствием JDK. Кроме того, с какой стати новая версия Java ломает старую скомпилированную версию?
источник
java.exe
,,javaw.exe
иjavaws.exe
хранится вWindows/SysWOW64
. Кроме того, по какой - то причине , когда я установил 1,8 SDk он установленjava.exe
,javaw.exe
иjavaws.exe
подC:/ProgramData/Oracle/Java/javapath
. Не знаю почему, но я их тоже удалил иjava -version
все еще работает.Просто была аналогичная ошибка при установке java 8 (jdk & jre) в системе, уже работающей с Java 7.
Моя среда была настроена правильно (правильно определены путь и java_home), но проблема возникает из-за того, как работали установщики Java до 8, то есть они использовали для копирования трех исполняемых файлов (java.exe, javaw.exe и javaws.exe ) в системный каталог Windows. Они остаются до тех пор, пока не будут перезаписаны новой установкой до 8.
Однако установщик Java 8 вместо этого создает символические ссылки в новом каталоге C: \ ProgramData \ Oracle \ Java \ javapath, указывая на фактическое расположение JRE 8.
Это означает, что вы фактически запустите старые 7 exes, но будете использовать новые 8 DLL.
Итак, решение состоит в том, чтобы просто удалить 3 exes Java, как указано выше, из системного каталога Windows.
Если вы используете 32-битную Java в 64-битной Windows, exes будут в Windows \ SysWOW64, в противном случае в Windows \ System32.
источник
Я удалил файлы 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: Я не могу добавить это в качестве комментария к ответу Виктора, потому что у меня недостаточно очков.
источник
В меню ПУСК введите "regedit", чтобы открыть редактор реестра.
Перейдите к «HKEY_LOCAL_MACHINE» в левом проводнике реестра / древовидном меню.
Нажмите "ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ" в реестрах "HKEY_LOCAL_MACHINE"
Щелкните "JavaSoft" в реестрах "ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ".
Нажмите «Java Runtime Environment» в списке реестров «JavaSoft», здесь вы можете увидеть различные версии установленной java.
Нажмите «Среда выполнения Java» - справа вы получите 4-5 строк. Выберите «CurrentVersion» и щелкните правой кнопкой мыши (выберите вариант изменения). Измените версию на «1.7»
Теперь волшебство завершено
источник
Я не знаю, следит ли кто-нибудь еще за этой веткой, но недавно у меня возникла эта проблема, когда я пытался запустить ActiveMQ 5.10 как службу Windows.
У меня не задан путь JAVA_HOME. У меня были установлены Java 6 и Java 7, но версия по умолчанию была v7. (т.е. если я открыл командное окно и набрал "java -version").
Вот где разгадка - "java -version" вернула "Java HotSpot (TM) 64-Bit Server VM (сборка 23.1-b03, смешанный режим)", но мне была установлена служба Win32 ...
Оказывается, если вы используете оболочку Win32 на 64-битной машине, она каким-то образом решает использовать другую версию Java ...
Поэтому я решил удалить 32-битную версию оболочки и установить 64-битную версию. отвращение к моей машине; просто привычка, наверное ... Но, к счастью, я решил проблему в конце концов ...
источник
Для моей Win7
Парадокс заключался в том, что java.exe и javaw.exe в папке System32. Открыв эту папку, я не увидел их, но с помощью поиска в меню «Пуск» получил ссылки на эти файлы и удалил их. Следующий поиск дал мне ссылки на файлы из JAVA_HOME
магия)
источник
Перейти в каталог с правильным,
java.exe
т.е. перейти к требуемой версии JDKjava.exe
Запустите
java.exe
из этого каталога, он имеет приоритет над настройками реестра и $ PATH.источник
Я решил эту проблему, удалив Java 1.8
источник
Баночка была скомпилирована в
1.6
соответствии с требованиями. Вот почему вы получаете эту ошибку. Два разрешения:1) Используйте Java 1.6.
ИЛИ
2) Перекомпилируйте банку, чтобы она соответствовала вашей среде.
1.7
источник
Используя regedit, удалите записи, соответствующие java 7. Это будет работать.
источник