ЯдроКодаподготовка к экзаменам
Учебная платформа

Загружаем материалы

Подготавливаем материалы и навигацию по разделу.

Установка Java и jvm.dll: диагностика JDK, PATH и среды IDE

Автор: · Обновлено

Ошибка jvm.dll появляется на этапе загрузки среды выполнения, ещё до обычной логики Java-программы. Прежде чем менять проект, нужно установить, какой launcher запущен, какой…

Ошибка jvm.dll появляется на этапе загрузки среды выполнения, ещё до обычной логики Java-программы. Прежде чем менять проект, нужно установить, какой launcher запущен, какой runtime он ищет и совпадает ли этот путь с выбранным JDK.

Выберите JDK под свою систему

Для трека используйте полный JDK 25 подходящей архитектуры с официальной страницы поставщика. Установщик или целиком распакованный архив должны сохранять структуру каталогов. Не переносите один java.exe отдельно от остальной поставки: launcher зависит от соседних компонентов. Инструкция Oracle для Windows.

Сначала убедитесь, что вам разрешено устанавливать программы на эту машину. На рабочем компьютере корпоративные ограничения могут определять допустимого поставщика и каталог. В Windows проводник должен показывать расширения: файл EnvironmentCheck.java.txt не является исходником с ожидаемым именем.

Проверьте обе команды и оба пути

В PowerShell следующие команды только показывают текущую конфигурацию:

where.exe java
where.exe javac
Get-Command java -All
$env:JAVA_HOME
java -version
javac -version

Первая найденная в PATH команда может относиться к старой установке. JAVA_HOME обычно указывает на корень JDK, а не на bin и не на файл java.exe. Эта переменная не заставляет произвольный launcher использовать именно её: сверяйте правила конкретной программы. Oracle отдельно описывает случай, когда старый javapath маскирует новый JDK. Диагностика путей Windows.

Для пробной настройки только текущего окна PowerShell укажите свой фактический каталог вместо примера:

$env:JAVA_HOME = 'C:\Java\jdk-25'
$env:Path = "$env:JAVA_HOME\bin;$env:Path"
& "$env:JAVA_HOME\bin\java.exe" -version
& "$env:JAVA_HOME\bin\javac.exe" -version
Test-Path "$env:JAVA_HOME\bin\server\jvm.dll"

Такой путь к DLL характерен для рассматриваемой Windows-поставки HotSpot; другие runtime могут иметь иную структуру. На Linux/macOS вместо where.exe используйте command -v java и command -v javac, затем обе команды -version. Файл jvm.dll относится к Windows, поэтому его поиск на Linux не является проверкой исправности Java.

Минимальная программа отделяет среду от проекта

Сохраните EnvironmentCheck.java отдельно от рабочего проекта:

public class EnvironmentCheck {
    public static void main(String[] args) {
        System.out.println("feature=" + Runtime.version().feature());
        System.out.println("java.home=" + System.getProperty("java.home"));
        System.out.println("os.arch=" + System.getProperty("os.arch"));
    }
}

Соберите javac -encoding UTF-8 --release 25 EnvironmentCheck.java и выполните java EnvironmentCheck. Для выбранного выпуска первая строка должна быть feature=25; остальные показывают реальный runtime процесса и его архитектуру, а не предполагаемую настройку редактора. Значения пути и архитектуры зависят от машины. Свойства System.

Если пример работает из терминала, но запуск проекта падает, сравните настройки этого запуска: возможно, IDE, Maven, Gradle или сторонняя обёртка выбирают другой runtime. Это сужает область поиска; успешный java -version не доказывает исправность всех установленных Java-приложений.

Разберите сообщение о недостающих компонентах

Текст вида jvm.dll: please install or use the JRE or JDK that contains these missing components сообщает о невозможности загрузки компонента, но сам по себе не определяет причину. Выполняйте проверки последовательно:

  1. Зафиксируйте имя программы и полный путь DLL из сообщения. Это может быть JDK проекта либо встроенный runtime самой программы.
  2. Проверьте существование указанного каталога и файла. Если путь указывает на удалённую версию, исправляйте конфигурацию launcher. Если установка неполная, восстановите целый дистрибутив из официального источника.
  3. Сверьте архитектуру запускающей программы, runtime и необходимых нативных компонентов. Наличие DLL не доказывает, что Windows может её загрузить: возможны несовместимые зависимости или ограничения доступа.
  4. Изучите журнал приложения и сообщения установщика. При блокировке защитным ПО проверьте причину и происхождение файла; отключение защиты не является диагностикой.

Не скачивайте случайную DLL и не копируйте её в System32: библиотека связана с конкретной сборкой JVM. Если ошибка относится к стороннему приложению, поддерживаемую версию runtime определяет его документация; современный JDK 25 может не быть заменой требуемой старой среде.

IntelliJ IDEA: два независимых выбора

У IntelliJ IDEA есть встроенный JetBrains Runtime, который запускает саму IDE. Его версия видна в Help → About; смена boot runtime не выбирает JDK учебного проекта. Обычно следует использовать поставляемый с IDE runtime. Если вручную настроенный boot runtime сломан, восстановите стандартный вариант по инструкции JetBrains. Boot runtime IDE.

Project SDK указывается отдельно в File → Project Structure → Project. Проверьте также SDK модуля и среду конкретной Run Configuration. Для Gradle/Maven собственный выбор JVM нужно согласовать с проектом. Если IDEA вообще не открывается, изменение .java и Project SDK не чинит runtime, который должен сначала запустить редактор. Настройка SDK проекта.

Практика: паспорт рабочего запуска

Составьте небольшой отчёт: команда запуска, найденные пути java/javac, их версии и результат EnvironmentCheck. В IDE сравните java.home из Run Configuration с выводом терминала. Не удаляйте старые установки ради эксперимента. Достаточно временно указать полный путь к выбранному исполняемому файлу и показать, какой именно процесс изменился.

Windows-команды и порядок диагностики сверены с документацией; примеры Java проверяются в Linux-контейнере. Работа установщика и загрузчика DLL на реальной Windows в этой проверке не воспроизводилась.

Частые вопросы

Почему JAVA_HOME правильный, а java показывает другую версию?

Терминал находит исполняемый файл по PATH, а некоторые приложения используют собственную настройку. Проверьте все найденные команды и попробуйте полный путь к java.exe нужного JDK в новом процессе.

Файл jvm.dll существует. Значит, ошибка ложная?

Нет. Загрузчик должен открыть файл и загрузить его зависимости в совместимый процесс. Ошибка доступа, другая архитектура или повреждённая установка возможны даже при положительном результате Test-Path.

Источники