In Android Studio I am facing bellow error
This popup shows when I press Alt+Enter
for missing classes(symbols). When I click on setup SDK it shows two options
- 1.8(Java version “1.8.0_60”)
- Android API 23 Platform (Java version “1.8.0_60”)
Nothing happens on selecting any of above options.
NOTE: My Java_Home path is correct and in android studio I have checked JDK path it’s correct.
I am using Android Studio 1.5.0, Java 1.8 and windows 10
asked Feb 23, 2016 at 12:48
Jaiprakash SoniJaiprakash Soni
4,1005 gold badges36 silver badges67 bronze badges
7
Simple Invalidate Cache and Restart
doesn’t work for me. So I have done following steps:
- Check and verify Java path in Java_home variable
- Start Android Studio and invalidate cache
File--> Invalidate Cache and Restart
answered Feb 24, 2016 at 5:35
Jaiprakash SoniJaiprakash Soni
4,1005 gold badges36 silver badges67 bronze badges
2
Start Android Studio and click File -> Invalidate Cache and Restart.
This has worked for me. Thanks
Nathan Bird
8801 gold badge9 silver badges23 bronze badges
answered Apr 5, 2017 at 5:04
Well… In my case, setting up JDK in Project Structure
didn’t work. Invalidating and restart
didn’t work either. On further debugging, it led me to this:
Can-t-start-Intellij-after-update
Background of this problem:
I had installed Android Studio 3.6 and upgraded to Android Studio 4. Plugins like Mateial theme
, Flutter
, CSV viewer
, JSON viewer
etc weren’t compatible with Android Studio 4. So I had disregarded those plugins after I upgraded to AS 4.
After some days, I got a notification that plugins which I had disregarded earlier were compatible with AS 4. So I installed those and restarted AS 4 and applied Material theme
. I started to face problems like Set up JDK
even though the path to JDK was proper.
So I closed AS 4, deleted caches from .gradle
, .android
, .AndroidStudio4.0systemcaches
. Then I opened AS 4 and set up JDK
error was gone.
Hope it helps…
P.S: If same problem persists, then I’m afraid that you’ve to unistall AS and download AS 4 directly and install it. I still can’t figure out why it happened to me…
answered Jun 8, 2020 at 16:36
Ajay KulkarniAjay Kulkarni
2,90013 gold badges48 silver badges96 bronze badges
Close Android studio then again open it .
Go to File–> Invalidate Cache and Restart .
You are done.
answered Jun 15, 2018 at 11:30
HanishaHanisha
83910 silver badges8 bronze badges
I am trying to build the Android source by the steps provided here. However I have troubles with my JDK. When launching:
lunch full-eng
I get the following error:
/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-gcc: Permission denied
/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-gcc: Permission denied
/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-gcc: Permission denied
/bin/bash: build/core/find-jdk-tools-jar.sh: Permission denied
build/core/config.mk:344: *** Error: could not find jdk tools.jar, please install JDK6, which you can download from java.sun.com. Stop.
** Don't have a product spec for: 'full'
** Do you have the right repo manifest?
So I tried to install the JDK correctly by the following steps:
Step 1
Uninstall everything JAVA related by following these steps.
Step 2
Install correct JAVA by following these steps. I used the default installer option and version 6, not 7 or 8
Step 3
Here I am simply following this answer.
sudo gedit .bashrc
Edit the file at the bottom by adding those lines
JAVA_HOME=/usr/lib/jvm/java-6-oracle
export JAVA_HOME
# replacing /path/to/androidsdk/ with correct path of course..
export PATH=${PATH}:/path/to/androidsdk/android-sdk-linux/platform-tools
PATH=$PATH:$JAVA_HOME
# Variable ANDROID_JAVA_HOME
ANDROID_JAVA_HOME=/usr/lib/jvm/java-6-oracle
export ANDROID_JAVA_HOME
PATH=$PATH:$ANDROID_JAVA_HOME
Step 4
Test what I’ve done so far:
...:~$ echo $JAVA_HOME
/usr/lib/jvm/java-6-oracle
...:~$ java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) Server VM (build 20.45-b01, mixed mode)
...:~$ which java
/usr/bin/java
...:~$ echo $ANDROID_JAVA_HOME
/usr/lib/jvm/java-6-oracle
...:~$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/java-6-oracle/bin:/usr/lib/jvm/java-6-oracle/db/bin:/usr/lib/jvm/java-6-oracle/jre/bin:/path/to/androidsdk/android-sdk-linux/platform-tools:/usr/lib/jvm/java-6-oracle
Step 5
Go in terminal to the Android source folder and enter
source build/envsetup.sh
Result:
including device/asus/grouper/vendorsetup.sh
including device/asus/tilapia/vendorsetup.sh
including device/generic/armv7-a-neon/vendorsetup.sh
including device/generic/armv7-a/vendorsetup.sh
including device/generic/mips/vendorsetup.sh
including device/generic/x86/vendorsetup.sh
including device/lge/mako/vendorsetup.sh
including device/samsung/maguro/vendorsetup.sh
including device/samsung/manta/vendorsetup.sh
including device/samsung_slsi/arndale/vendorsetup.sh
including device/samsung/toroplus/vendorsetup.sh
including device/samsung/toro/vendorsetup.sh
including device/ti/panda/vendorsetup.sh
Step 6
Go in terminal to the Android source folder and enter
lunch full-eng
Result:
.../androidsource$ lunch full-eng
/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-gcc: Permission denied
/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-gcc: Permission denied
/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-gcc: Permission denied
/bin/bash: build/core/find-jdk-tools-jar.sh: Permission denied
build/core/config.mk:344: *** Error: could not find jdk tools.jar, please install JDK6, which you can download from java.sun.com. Stop.
** Don't have a product spec for: 'full'
** Do you have the right repo manifest?
What did I do wrong? What is missing? What about the “Permission denied”?
« Javac не распознается как внутренняя или внешняя команда » – это ошибка, с которой часто сталкиваются люди, пытающиеся скомпилировать программы Java в Windows с помощью командной строки. С этим также можно столкнуться, когда пользователи пытаются проверить текущую версию основного компилятора Java.
Что такое JavaC?
Javac (произносится как «java-see») – это основной компилятор Java, включенный в JDK (Java Development Kit), разработанный Oracle Corporation. Компилятор предназначен для приема исходного кода, соответствующего спецификациям языка Java (JL), и преобразования его в байт-код Java в соответствии с JVM (спецификация виртуальной машины Java).
Что вызывает ошибку Javac не распознается
Ошибка « Javac не распознается как внутренняя или внешняя команда » возникает, когда командная строка не может найти переменную Java PATH. Это может произойти по двум причинам:
- Java Development Kit (JDK) отсутствует на компьютере. Обычно это происходит из-за того, что пользователь ошибочно полагает, что вместе с Java Runtime Environment установлен Java Compiler (javac) .
- Путь к Javac не задан или задан неправильно. Чтобы выполнить компиляцию из командной строки и убедиться, что другие инструменты сервера приложений работают правильно, система должна знать местоположение Javac. В этом случае вам нужно будет указать путь вручную.
Шаг 1. Установка Java Development Kit (JDK)
Одна из основных причин возникновения этой ошибки заключается в том, что пользователи, которые только начинают изучать Java, путают Java Runtime Environment (JRE) с Java Development Kit (JDK) .
JRE является частью JDK , но большую часть времени загружается отдельно. Многие программы, использующие среду выполнения Java, включают ее в свои установочные пакеты.
Поскольку существует очень мало причин, по которым вам понадобится Java Development Kit (JDK), если вы не заинтересованы в разработке Java, вы могли подумать, что Javac уже установлен JRE, но на самом деле вам нужно установить весь Java Development Kit.
Если вы считаете, что этот сценарий применим к вашей ситуации, вот краткое руководство по установке Java Development Kit (JDK) для устранения ошибки «javac не распознается» :
- Перейдите по этой ссылке ( здесь ) и щелкните значок загрузки над платформой Java (JDK) . Это обеспечит установку последней доступной версии Java Development Kit .
- На следующем экране прокрутите вниз до Java SE Development Kit и убедитесь, что вы выбрали переключатель, связанный с соглашением Accept License . Затем щелкните ссылку для загрузки, связанную с Windows. Можно выбрать один из двух вариантов, но мы рекомендуем загрузить файл .exe, поскольку он избавит вас от извлечения содержимого после завершения загрузки.
- После завершения загрузки откройте исполняемый файл установки JDK и следуйте инструкциям на экране, чтобы завершить установку.
- На следующем экране убедитесь, что и Инструменты разработки, и Исходный код настроены для установки на ваш локальный жесткий диск вместе со всеми их дополнительными функциями. Кроме того, если возможно, мы рекомендуем вам сохранить путь установки по умолчанию, потому что шаг 2 будет проще.
Примечание. В качестве дополнительной рекомендации запишите путь установки в разделе «Установить в», поскольку он понадобится вам на шаге 2 .
- Подождите, пока установится Java Development Kit . Когда процесс будет завершен, перезагрузите компьютер вручную, если вам не будет предложено сделать это автоматически.
Теперь, когда вы убедились, что вы установили правильный пакет, который устанавливает JavaC, перейдите к шагу 2, где мы убедимся, что вы правильно указали путь к JavaC.
Шаг 2: установка переменной среды Java и обновление системного пути
Прежде чем мы начнем с этого процесса, важно понять, что следующие процедуры применимы, только если вы убедились, что Java Development Kit установлен правильно ( шаг 1 ).
Если вы установили JDK и по-прежнему получаете сообщение « Javac не распознается как внутренняя или внешняя команда », вы только что столкнулись с одной из наиболее распространенных технических проблем, с которыми сталкиваются новички в Java. Чтобы завершить работу над Java Development Kit в Windows, вам необходимо выполнить ряд действий вручную. Эти шаги всегда должны следовать за установкой JDK, даже после обновления Java Development Kit.
Вот краткое руководство по установке правильной переменной среды Java и обновлению системного пути:
- Нажмите клавишу Windows + R, чтобы открыть диалоговое окно « Выполнить ». Затем введите « sysdm.cpl » и нажмите Enter, чтобы открыть окно « Свойства системы» .
- В окне « Свойства системы» перейдите на вкладку « Дополнительно » и нажмите « Переменные среды» .
- Во вновь открывшемся окне «Переменная среды» нажмите кнопку « Создать» в разделе « Системная переменная» .
- В окне « Новая системная переменная» установите для имени переменной значение JAVA_HOME, а в качестве значения переменной – путь к вашему каталогу JDK . Чтобы сохранить изменения, нажмите ОК.
Примечание. Если вы прислушались к нашим советам на шаге 1 и записали путь установки JDK, вы можете вставить его прямо в значение переменной .
- Теперь, когда вы вернулись в окно переменных среды , найдите переменную с именем path в разделе Системные переменные . С Путь выбранной переменной, нажмите Редактировать кнопку.
- В окне « Изменить переменную среды» нажмите кнопку « Создать» .
- Назовите только что созданную переменную среды % JAVA_HOME% bin и нажмите Enter . Затем нажмите ОК, чтобы применить изменения.
- На этом последнем шаге ваша среда Java должна быть настроена. Теперь вы сможете компилировать приложения из CMD или проверять свою версию Javac.
Бонусный шаг: проверка успешности настройки
Есть еще один дополнительный шаг, который вы можете выполнить в командной строке, чтобы убедиться, что вы успешно настроили путь к переменной среды Java. Выполните следующие шаги, чтобы проверить, работает ли ваша конфигурация:
- Нажмите клавишу Windows + R, чтобы открыть диалоговое окно «Выполнить». Затем введите « cmd » и нажмите Enter, чтобы открыть окно командной строки.
- В окне командной строки введите echo% JAVA_HOME% и нажмите Enter, чтобы увидеть, какой результат вы получите. Если вы видите распечатку с каталогом для JDK, то шаг 2 был успешным и ваш JAVAC работает нормально. Если вместо пути JDK вы видите пробел, это означает, что вам не удалось настроить переменную среды – в этом случае вернитесь к шагам 1 и 2 .
Программы или игры на основе Java всегда надежны, если Java правильно установлена. Но недавно пользователи сообщили, что им не удалось создать виртуальную машину Java при попытке запуска программ Java, таких как Minecraft. Это означает, что виртуальная машина, используемая программами Java для работы, установлена неправильно. Если вы также столкнулись с той же проблемой, вы находитесь в правильном месте. Мы предлагаем вам идеальное руководство, которое поможет вам исправить ошибку: не удалось создать виртуальную машину Java.
Ошибка: Не удалось построить виртуальную машину Java часто появляется при компиляции кода в интегрированной среде разработки (IDE). Обычно это вызвано
-
Неправильные аргументы или параметры, используемые для открытия Java: если вы запускаете собственное приложение или приложение с открытым исходным кодом, эта ошибка может появиться и сделать систему нестабильной.
-
Недостаточно памяти максимальной кучи Java: выполнение приложения с максимальным размером кучи, превышающим значение, заданное в системной переменной, может вызвать эту ошибку.
-
Исполняемый файл Java или программа, запущенная без прав администратора: эта ошибка может возникнуть при запуске приложений, которым для правильной работы требуется доступ администратора.
Теперь мы понимаем причины этой ошибки. Существуют и другие подобные ошибки, с которыми сталкиваются пользователи Java, такие как ошибка запуска виртуальной машины Java, которая в основном возникает из-за проблемы с установкой Java. Начнем с методов исправления ошибки «Не удалось создать виртуальную машину Java».
Предварительные проверки
-
Проверьте аргументы запуска: проверьте указанные вами начальные параметры. Даже в правильной версии Java параметры запуска могут изменить версию, используемую для компиляции. Если вы выполнили обновление Java на месте, вполне вероятно, что параметры запуска по-прежнему относятся к более ранней версии.
-
Проверьте синтаксис: убедитесь, что синтаксис ваших аргументов правильный. Даже незначительные ошибки в нем могут подсказать, что не удалось создать ошибку виртуальной машины Java. Проверьте наличие лишних дефисов или неправильно записанных версий.
-
Проверьте повреждение JDK: поврежденный комплект Java Development Kit может вызвать ошибку: не удалось создать виртуальную машину Java. Вы можете проверить, поврежден он или нет, выполнив следующие действия:
1. Нажмите клавишу Windows, введите «Командная строка» и нажмите «Запуск от имени администратора».
2 Введите c:> java -version и нажмите клавишу Enter.
3. Если при выполнении команды возникает ошибка, переустановите JDK. Проверьте, решает ли проблема переустановка JDK. Если нет, попробуйте исправление, указанное в этой статье.
Способ 1: Запустите Java в режиме администратора
Приложения без требуемого доступа администратора могут работать нестабильно на ПК с Windows и вызывать проблемы, включая ошибку: не удалось создать виртуальную машину Java. Это можно исправить, заставив основной исполняемый файл Java (java.exe) запускаться с правами администратора. Для этого выполните следующие действия.
1. Нажмите клавиши Windows + E, чтобы открыть проводник.
2. Перейдите к файлу Java.exe в проводнике. Это вообще в
C:Program FilesJava*JRE build version*bin
где версия сборки JRE зависит от установленной версии.
Или
C:Program Files(x86)Common FilesOracleJavajavapath
Примечание. Если вы установили Java в другом месте, следуйте по этому пути и найдите файл Java.exe.
3. Щелкните правой кнопкой мыши файл Java.exe и выберите «Свойства», чтобы открыть окно «Свойства».
4. Перейдите на вкладку «Совместимость», установите флажок «Запускать это программное обеспечение от имени администратора, как показано».
5. Нажмите «Применить» и «ОК», чтобы сохранить изменения.
Теперь всякий раз, когда вы открываете Java, он будет работать с правами администратора.
Способ 2: увеличить размер кучи Java
Эта ошибка может возникнуть, когда для Java не хватает системной памяти, требующей открытия клиента виртуальной машины. По умолчанию Java настроен на использование максимального размера кучи, и при запуске приложения, превышающего предельный размер кучи, возникает ошибка. Создание новой системной переменной для увеличения доступной памяти может решить эту проблему, и вы можете сделать это, выполнив следующие действия.
1. Нажмите одновременно клавиши Windows + R, чтобы открыть диалоговое окно «Выполнить».
2. Введите sysdm.cpl и нажмите клавишу Enter, чтобы открыть свойства системы.
3. Перейдите на вкладку «Дополнительно».
4. Нажмите кнопку «Переменные среды…», как показано на рисунке.
5. В окне «Переменные среды» нажмите кнопку «Создать…» в разделе «Системные переменные».
6. Установите для имени переменной значение _JAVA_OPTIONS, а для значения переменной — Xmx512M во всплывающем окне «Новая системная переменная». Нажмите OK, чтобы сохранить изменения.
Примечание. Если ошибка не устранена, вы можете дополнительно увеличить объем памяти, установив для переменной значение –Xmx1024M вместо –Xmx512M, как показано на шаге 6.
Способ 3: изменить код Java
Некоторые пользователи сообщают, что они могут исправить эту ошибку, внеся некоторые простые изменения в свой код. Некоторые из них упомянуты ниже.
1. Замена двойного дефиса одним дефисом в вашем коде может решить эту проблему.
- Код с двойным дефисом
[email protected]:~$ java –version Picked up JAVA_TOOL_OPTIONS: –javaagent:/usr/share/java/jayatanaag.jar Unrecognized option: –version
- Тот же код с одним дефисом
[email protected]:~$ java -version Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar Unrecognized option: -version
2. Также рассмотрите возможность исключения фразы из своего аргумента:
-Djava.endorsed.dirs=”C:Program FilesApache Software FoundationTomcat 8.5endorsed”
3. Убедитесь, что запись -vm добавлена выше аргументов vm в файле eclipse.ini, иначе в войнах env будет выбрана JVM V6.
Примечание. Если вы используете Ubuntu, вы должны знать, что она поддерживает только Java 8. Таким образом, вы можете удалить Java, как показано в методе 3, и вместо этого установить более старую версию.
Способ 4: изменить файл Eclipse.ini
Если вы используете Eclipse IDE, внесение некоторых изменений в файл eclipse.ini может исправить код ошибки, который не может создать виртуальную машину Java.
Примечание. Eclipse.ini находится внутри папки Eclipse в каталоге, где вы установили Eclipse.
Шаг I. Уменьшите использование памяти
1. Щелкните правой кнопкой мыши файл Eclipse.ini и выберите «Открыть с помощью…» > «Блокнот».
2. Найдите строку, соответствующую -Xmx256m.
Примечание. Это также может быть -Xmx1024m или -Xmx 512m.
3. Измените значение по умолчанию на что-то более совместимое с оперативной памятью вашего ПК, а также добавьте номер версии.
Например,
-Xmx512m -Dosgi.requiredJavaVersion=1.6
ИЛИ
-Xmx512m -Dosgi.requiredJavaVersion=1.7
ИЛИ
-Xmx512m -Dosgi.requiredJavaVersion=1.8
4. Попробуйте удалить значение 256m из строки -launcher.XXMaxPermSize.
Шаг II: Дополнительные модификации
1. Удалите следующую строку из вашего файла, если это возможно.
-vm P:Programsjdk1.6bin
2. Замените следующую строку приведенным ниже кодом.
set -Dosgi.requiredJavaVersion=1.5
К
set -Dosgi.requiredJavaVersion=1.6.
3. Выше баллов! строку, попробуйте добавить эту строку:
-vm C:Program Files (x86)Javajre6binjavaw.exe
4. Обратитесь к JVM.dll следующей строкой.
-vm C:Program FilesJavajre7binclientjvm.dll
5. Замените -vmargs на путь к javaw.exe в файле eclipse.ini.
-startup plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120522-1813 -product com.android.ide.eclipse.adt.package.product --launcher.XXMaxPermSize 256M -showsplash com.android.ide.eclipse.adt.package.product --launcher.XXMaxPermSize 256m --launcher.defaultAction openFile **-vm “c:Program FilesJavajdk1.7.0_07binjavaw.exe”** -Dosgi.requiredJavaVersion=1.6 -Xms40m -Xmx768m -Declipse.buildId=v21.1.0-569685
6. Поместите строку в конец файла eclipse.ini и проверьте, работает ли она.
-vmargs -Xms40m -Xmx512m -XX:MaxPermSize=256m
7. Удалите следующие строки из eclipse.ini и проверьте, решает ли это проблему.
-XX:+UseStringDeduplication -XX:+UseG1GC
Примечание. Если проблема не устранена, попробуйте стереть файл eclipse.ini, но предварительно сделайте его копию. Кроме того, перед запуском Java закройте все приложения, потребляющие большой объем памяти.
Способ 5: переустановите Java
В некоторых случаях проблема возникает из-за неправильной установки Java или из-за того, что ее установка со временем была повреждена. В результате, после полного удаления Java, мы переустановим его на этом этапе. Как результат:
1. Нажмите одновременно клавиши Windows + R, чтобы открыть диалоговое окно «Выполнить».
2. Введите Appwiz.cpl и нажмите OK, чтобы запустить Программы и компоненты.
3. Пролистайте установленные приложения и найдите Java.
4. Щелкните его правой кнопкой мыши и выберите «Удалить», чтобы удалить Java.
Примечание. Также следует удалить другие комплекты и обновления для разработки Java.
5. Дождитесь завершения процесса удаления и перезагрузите компьютер.
6. Перейдите на страницу загрузки Java, чтобы загрузить самую последнюю версию Java Runtime Environment.
Примечание 1. Если переустановка Java Runtime Environment не устраняет проблему, загрузите самую последнюю версию JDK.
Примечание 2. Если у вас уже был JDK, попробуйте использовать другую версию или удалите среду выполнения Java, поставляемую вместе с ней.
Часто задаваемые вопросы (FAQ)
Q1. Что это означает, когда он говорит, что не может создать виртуальную машину Java?
Ответ: Параметр -Xmx используется виртуальной машиной Java для указания максимального размера памяти кучи. Параметр -Xmx в файле eclipse.ini, вероятно, имеет слишком высокое значение для текущей среды, которая вызывает это сообщение об ошибке.
Q2. Что такое виртуальная машина Java?
Ответ: Виртуальная машина Java (JVM) — это программа, которая позволяет компьютеру запускать программы Java и другие языки, переведенные в байт-код Java. JVM описывается стандартом, формально описывающим требования к реализации JVM.
Q3. Можно ли получить Java бесплатно?
Ответ: Чтобы установить Java, вы должны сначала загрузить приложение установки Oracle. Выберите «Бесплатная загрузка Java» в раскрывающемся меню. После этого вам будет предложено прочитать и принять лицензионное соглашение с конечным пользователем.
***
Мы надеемся, что это руководство было полезным и что вы смогли устранить проблему с виртуальной машиной Java. Дайте нам знать, какой метод работал для вас лучше всего. Если у вас есть какие-либо вопросы или предложения, не стесняйтесь оставлять их в разделе комментариев.
При запуске какого-либо кода, написанного на Java, программист может получить сообщение об ошибке с текстом «A JNI error has occurred, please check your installation and try again». Обычно причиной ошибки выступает разница в версии компилятора и среды выполнения, из-за чего происходит некорректная интерпретация и выполнение имеющегося кода. Ниже разберём, в чём суть данной ошибки, как её исправить, а также отдельно укажем, как решить данную ошибку при запуске игры Minecraft.
- Что такое JVM, JNI и JRE?
- Причина проблемы A JNI error has occurred, please check your installation and try again
- Установите одинаковую версию JRE и JDK
- Правильно настройте переменные среды для Java
- Ошибка JNI error has occurred при запуске Майнкрафт
- Заключение
Что такое JVM, JNI и JRE?
Как известно, программы, написанные на «Java», компилируются в байтовый код, который распознаётся виртуальной машиной Ява, называемой «JVM» (Java Virtual Machine). JVM по своей сути является компьютерным симулятором, и при запуске программы написанной на Java, распознаёт инструкции байтового кода, и переводит их в машинные инструкции собственной системы.
JVM должна обеспечивать удобный способ доступа к ресурсам системы – файлам, сетевым соединениям, видеокарте и другим компонентам. Механизмы доступа к этим ресурсам напрямую зависят от системы, в которой работает JVM. Для обеспечения своей работы виртуальная машина использует собственный интерфейс Java, называемый «JNI» (Java Native Interface).
Методы Java, использующие JNI для доступа к службам, квалифицируются термином «native». Квалификатор «native» сообщает виртуальной машине, что код для выполнения при вызове данного метода присутствует во внешней библиотеке. JVM ищет конкретный вызов библиотеки, который необходимо выполнить, на основе полного имени пути к методу и его аргументам. Существует специальное соглашение об именах, позволяющее сопоставить метод с конкретной ссылкой на внешнюю библиотеку.
Данный механизм JNI позволяет программам на Java кодировать имя переносимого метода. И скомпилированный в Виндовс код Java будет отлично запускаться на компьютерах под управлением Линукс или Мак.
Как мы уже писали выше, Java имеет собственные библиотеки для обеспечения базового взаимодействия с системой на уровне чтения-записи файлов, создания сетевых подключений и вывода изображения на экран. Они распространяются с JVM как часть среды выполнения Ява, известные как «JRE» (Java Runtime Environment), независимо от того, является ли она автономной JRE или включена в Java Development Kit (JDK).
Причина проблемы A JNI error has occurred, please check your installation and try again
Текст данной ошибки переводится как «Произошла ошибки INI, пожалуйста, проверьте вашу инсталляцию и попробуйте вновь». Данная ошибка, получаемая при запуске программы на JVM, указывает на проблему с запуском кода, связанного с собственным методом.
Причины проблемы могут быть следующими:
- Повреждена библиотека JDK / JRE, вследствие чего она не может быть загружена, и JVM не сможет выполнить код;
- Повреждён функционал операционной системы, вследствие чего последняя не в состоянии удовлетворить системный вызов, созданный нативным кодом;
- Имеются различия в номерах версий JRE (среда выполнения Java) и JDK (Java Development Kit), что также может вызывать ошибку JNI. Различия в номерах версий приведут к тому, что JVM откажется запускать код, потому что он был скомпилирован для совместимости с версией Java, превышающей максимальную версию, поддерживаемую JVM. Проще говоря, код может быть скомпилирован на одной версии Ява (например, 10), а пытается запускаться с помощью версии Ява 9;
- Также проблема может быть вызвана при попытке запустить файл.jar через командную строку, например с помощью команды java -jar File.jar.
Давайте разберём способы, позволяющие устранить ошибку JNI на вашем ПК.
Это может помочь: ошибка Out of memory – как устранить.
Установите одинаковую версию JRE и JDK
Исправить ошибку «A JNI error has occurred» поможет обновление JRE и JDK до актуальных синхронных версий. Необходимо убедится в их одинаковой версии, для чего вызовите системную строку (нажмите Win+R, введите там cmd и нажмите ввод), и наберите там:
java -version
и нажмите ввод.
Затем наберите: javac –version
Полученные результаты должны совпадать. Если они они не совпадают, то это сигнализирует о несоответствии версии компилятора и среды выполнения Java. Для решения проблемы рекомендуем установить однотипные и актуальные версии компилятора и среды выполнения, после чего вновь используйте команды «java -version» и «javac -version» для проверки, возвращают ли данные команды один и тот же номер версии.
Если версии синхронны, тогда ваш код Java необходимо будет скомпилировать с помощью компилятора новой версии. После этого ошибка «A JNI error has occurred, please check your installation» может быть устранена.
Правильно настройте переменные среды для Java
Для исправления ошибки «A JNI error has occurred» может понадобится настроить переменные среды для Java. Выполните следующее:
- Нажмите на Win+R;
- В открывшемся окошке введите sysdm.cpl и нажмите на ввод;
- Откроется окно свойств системы. Выберите вкладку «Дополнительно»;
- Далее внизу кликните на кнопку «Переменные среды»;
- В нижнем окне выберите переменную «Path», после чего нажмите чуть ниже на кнопку «Изменить»;
Выберите “Path”, и нажмите на “Изменить” - Здесь вы ищите строку, в которой прописан путь установки вашего JDK. Например, он может хранится по пути C:ProgramFilesJavajdk-13.0.1bin;
- Если этой записи в перечне ваших переменных нет, вы можете добавить её, нажав на «Создать» справа. Если же вы еще не установили JDK, вы можете скачать её с https://www.oracle.com/java/technologies/downloads/;
- Когда вы найдёте данную строку, используйте кнопку «Вверх» пока запись не окажется в самой верхней части;
- Нажмите внизу на «Ок» для сохранения результата, и перезагрузите ваш ПК. Ошибка «JNI error has occurred» будет исправлена.
Смотрите на данном англоязычном виде способ решения возникшей проблемы:
Ошибка JNI error has occurred при запуске Майнкрафт
Некоторые пользователи, установившие обновление Minecraft 1.17 («Caves and Cliffs: Part 1»), сообщают, что получают сообщение об ошибке «A JNI error has occurred, please check your installation and try again» или «Java exception».
Если вы один из таких пользователей, тогда вам нет повода для беспокойства. «Ошибка JNI», которая начала появляться с последним обновлением Minecraft 1.17, может быть исправлена путем установки Java 16 или более поздних версий для своей работы. Это подтверждается многими сообщениями от игроков, у которых возникла рассматриваемая в статье проблема.
Читайте также: GLFW error 65542: WGL the driver does not appear to support OpenGL – как решить?
Заключение
В нашем материале была рассмотрена суть ошибки «A JNI error has occurred, please check your installation and try again», и перечислены способы для её решения. Обычно причиной ошибки является несоответствие версии JRE и JDK, которые приводят к появлению рассматриваемой ошибки. Рекомендуем обновить версию данных инструментов до самой синхронной и актуальной, после чего декомпилировать ваш код. Обычно после этого ошибка будет устранена, и вы сможете использовать рабочую версию вашего кода для необходимых вам задач.