Java: “A JNI error has occurred, please check your installation …” – How to fix this error!

You have encountered this JNI Error error message? Don’t panic! The problem can usually be solved quite quickly – and here you can find out how.
Have you encountered this error message or popup?
Error: A JNI error has occurred, please check your installation and try again

Java Virtual Machine Launcher: JNI Error Popup
The problem comes from the fact that your JRE (Java Runtime Enviroment), that is your installed Java version and your JDK (Java Development Kit) do not work together correctly. Advertisements
Now there are several possible solutions for you. Just choose the scenario that applies to you:
JNI Error in Windows CMD
The problem can occur if you want to call a .jar file via command line (Windows CMD), e.g. via the command java -jar File.jar or if you have compiled your program with Eclipse before.
To fix the error, you need to adjust the environment variables for Java.
- To do this, type “environment variable” in your Windows search and open the “Edit System Environment Variables” item. In this window you click on “Environment variables…”.
- The “Environment variables” window opens. There you select the variable “Path” in the lower window “System variables” and click on “Edit…”.
- There you look for the line where the installation path of your Java JDK is stored. In my case this is under C:\Program Files\Java\jdk-13.0.1\bin.
If you don’t have a Java JDK installed yet, you can download and install the .exe installation file (“x64 Installer”) here. Advertisements
- If you do not have this entry, you can add it by clicking the “New” button.
- Select the line with the Java JDK and click on “Move up” until the entry is at the top. Done!
- Now you have to close and reopen the Windows-CMD once and the error should be fixed.
JNI Error in Eclipse
In Eclipse the problem can also be the JDK and JRE version. But first see if it might be a simpler problem:
Maybe you have named one of your packages identically to a Java internal package (e.g. java). Try to rename your package – this can be the simple solution.
If the problem is not fixed I navigate to your Eclipse workspace and compile your main file manually in the Windows CMD using the following command: javac Main.java . Then you can run the file manually with java Main . If this works, it is probably due to the JDK and JRE versions in Eclipse. Reinstalling Eclipse may help.
JNI Error when starting a Minecraft Server
If you try to start your Minecraft server via the official server.jar (error occurs since version 1.17), you may get this error message:

Java Virtual Machine Launcher: JNI Error Popup
- Download the latest Java JDK version as .exe file (“x64 Installer”) and install by clicking on the .jar file
- Now the server should start again
JNI Error in Minecraft TLauncher
This error message can also appear when launching the Minecraft TLauncher.
- Download the latest Java JDK version as .zip archive (“x64 Compressed Archive”) (see screenshot)
- Right-click on the downloaded file and click “Extract here”.
- Copy the unzipped folder to the directory C:\Program Files\Java
- Launch your Minecraft TLauncher and click on the gear in the bottom right corner
- Click at “Java path” on “Browse…” and choose C:\Program Files\Java\jdkX\bin\javaw.exe (replace the X by the name of your JDK folder).
- Save everything – now the game should start again
Java JNI error message still appears?
- Restart your computer
- Uninstall old Java versions under Control Panel > Programs > Programs and Features and install the latest Java JRE and Java SDK.
I hope that you were able to fix the JNI error with the help of this post. If this is still not the case, feel free to write me a comment.
What did you think of this post?
![]()
![]()
I have a shell script where I am calling spark2-submit command to call my jar. It throws an error as per below, but it runs OK if I run the same spark2-submit command manually.Error: A JNI error has occurred, please check your installation and try againException in thread “main” java.lang.NoClassDefFoundError: org/slf4j/Logger at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at java.lang.Class.privateGetMethodRecursive(Class.java:3048) at java.lang.Class.getMethod0(Class.java:3018) at java.lang.Class.getMethod(Class.java:1784) at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:650) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:632)Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger at java.net.URLClassLoader.findClass(URLClassLoader.java:387) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) … 7 more
I do not see a gear icon in launcher? Where is it so how do I change the Java path?
Error: A JNI Error Has Occurred in Minecraft [Solved]

There are a couple of errors users can encounter with the Minecraft client. Recently, users report the -error: a JNI error has occurred, please check your installation and try again when starting the game client or server (.jar) on their computers.
Why do I get a JNI error in Minecraft?
Games like Minecraft depend on Java libraries to function on your PC. So, issues with the Java library will affect the game client. It can prompt Windows error 2 while loading the Java VM on the system.
Also, compatibility is a common cause of the problem. If you’re using a Minecraft server, mods, or a feature that is incompatible with the Java library, you will likely encounter this error.
Other factors that can cause the JNI error has occurred in Minecraft are:
- The corrupt system path for Java – The Minecraft JNI error can occur if the Java system variable path is compromised. It can cause conflicts between the client and Java on your PC, resulting in a JNI error in the Minecraft server. Also, a wrong Java installation path can cause errors in Minecraft.
- Outdated version of Java – Older versions of Java only support designated versions of clients. So, having an outdated version for your game client can cause errors. It means the Minecraft client is running on a Java version lower than it should be.
The above-listed causes may differ depending on the circumstances around the error. Nonetheless, you can fix the error by troubleshooting your PC.
How do I fix the error: JNI error has occurred issue?
Try the following preliminary checks:
-
on your PC. and check if the error is resolved.
If the error persists, go on with the solutions below.
1. Install the Latest Java Version
- Go to Oracle’s official website, and download the installation package for your OS.

- Click on the downloaded file, double-click the .exe file, and allow the installer to make changes when prompted.
- Follow the onscreen installation instructions to install the latest Java.
- Restart your PC after the installation and check if the error persists.
Installing the latest version of Java will fix any compatibility errors that can cause the error between the game client and Java. You can read about downloading Java on Windows 11 for more guidance.
2. Reset Java Path
- Press Windows + R to open the Run dialog box, type sysdm.cpl, and press Enter to open the System properties.

- Navigate to the Advanced tab and click the Environment Variables button.

- On the System Variables page, select Path and click the Edit button.

- Find the Java variable paths files and delete them.

- Restart your PC afterwards and check if the JNI error persists.
Resetting the Java path will fix Java runtime environment errors that can cause the error.
Read more about this topic
3. Uninstall Old Versions of Java
- Press Windows + R key to open the Run dialog window, type the control panel, and press Enter .
- Click on the View by option and select Category. Go to Programs and click on the Uninstall a Program link.

- Click on the older versions of Java and hit the Uninstall option.

- Close the Control Panel and restart your PC to check if the JNI error in Minecraft persists.
Some users still report not being able to fix the error after the two fixes above. So, uninstalling the old versions of Java on your PC will force Minecraft to use the latest version if it isn’t using it.
Alternatively, our readers can check ways to fix JAR files not opening on Windows 11. Also, you can read about fixing Java update/install not complete error 1603 on your PC.
If you have more questions or suggestions, do not hesitate to use the comments below.
Still experiencing issues?
SPONSORED
If the above suggestions have not solved your problem, your computer may experience more severe Windows troubles. We suggest choosing an all-in-one solution like Fortect to fix problems efficiently. After installation, just click the View&Fix button and then press Start Repair.
A JNI error has occurred, please check your installation and try again при компиляции java программы
Многие новички, которые изучают программирование на Java при компиляции могут столкнуться с ошибкой «A JNI error has occurred, please check your installation and try again». Ошибка выскакивает даже если запускать совсем простой код типа «hello world!» как в примере ниже.

Пример простого кода Hello World!
Обычно компиляция проходит, но созданный класс не интерпретируется. У большинства пользователей ошибка появляется из-за следующих двух моментов:
- Неправильные пути в переменных средах;
- Вы компилируете файл более новой версией Java, а запустить пытаетесь на более ранней. Например компилировали при помощи Java 10, а запускаете на Java 9.
Как исправить ошибки при запуске и компиляции?
Первое, что следует проверить – пути в переменных средах. По списку первым например стоит путь:
А в конце каталог до jdk:
Операционная система компьютера находит екзешник «java.exe» и первым делом смотрит в «..\javapath» и останавливает поиск. Вам нужен файл что лежит в «…jdk\bin». В переменных средах сначала нужно поставить \jdk\bin, а потом уже \javapath. В конечном результате путь должен быть примерно такой:
PATH=C:\Program Files\jdk\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\QuickTime\QTSystem\
Во втором случае всё еще проще. Если вы компилируете используя более позднюю версию Java Runtime 54, то соответственно и запуск нужно производить в аналогичной версии. Сама строчка «hello has been compiled by a more recent version of the Java Runtime (class file version 54.0), this version of the Java Runtime only recognizes class file versions up to 53.0» как раз говорит нам об этом. Проверить это можно вбив фразу в тот же Гугл Переводчик.

Compiled by a more recent version of the Java Runtime
Выводы
Как видим с ошибкой» A JNI error has occurred, please check your installation and try again» при компиляции Java программы в основном сталкиваются новички. Решить проблему можно проверив версии Java при компиляции и запуске файлов программы. А так же просмотреть корректность путей к «\jdk\bin» и «\javapath». Напишите в комментариях помогло ли вам решение и удалось ли запустить вашу первую программу.
Произошла ошибка JNI, проверьте свою установку и повторите попытку в Eclipse x86 Windows 8.1
Приведенный выше код отлично работает на моем ноутбуке для друга и бросает эту ошибку на моем ноутбуке. Я запускаю код на Eclipse Juno, используя Java 7. Я также тестировал и запускал много java-программ на моем ноутбуке, все работает хорошо. Это единственная программа, которая дает такую ошибку. Это мой последний проект, и мне нужно, чтобы он работал на моем ноутбуке, я буду благодарен всем, кто помогает.
ОТВЕТЫ
Ответ 1
Краткий ответ: Щелкните правой кнопкой мыши класс, который содержит метод main. Нажмите «Выполнить как». Нажмите на «Java-приложение». Сочетание клавиш: Shift + Alt + X J (удерживая Shift и Alt, нажмите X; затем отпустите Shift и Alt и нажмите J).
Длинный ответ: Если честно, я не уверен на 100%, почему возникает эта проблема. Это может быть из-за использования другого JDK. Я столкнулся с той же ошибкой. Решение оказалось проще, чем я предполагал. Я привык запускать свой код с помощью Ctrl + F11. Но когда я запустил его как приложение Java (как я описал в «кратком ответе»), проблема была решена. Я не уверен, что это решает проблемы других людей, но стоит попробовать. 🙂
Ответ 2
Ошибка: Произошла ошибка JNI, проверьте свою установку и повторите попытку в Eclipse
Решение: Проверьте имя своего пакета, поскольку оно может сталкиваться с именем пакета в java. Просто измените имя пакета, чтобы решить проблему.:)
Ответ 3
У меня были подобные проблемы при использовании «java» в начале имени пакета, например. java.jem.pc
Проверьте вывод консоли, я получаю: Исключение в потоке «main» java.lang.SecurityException: Запрещено имя пакета: java.jem.pc
Ответ 4
В моем случае проблема была вызвана версией JDK. Чтобы решить эту проблему, я предлагаю перейти в ваш файл pom и проверить <jdk.version>1.7</jdk.version>.
Затем проверьте версию java в вашем cmd (windows) или терминале (OSX или LINUX), введя: java -version.
Сравните версию, показанную в командной строке терминала\с тем, что у вас есть в вашем файле pom. Убедитесь, что они одинаковые. Затем запустите проект снова.
Ответ 5
Запуск банки из командной строки:
Я получил информацию, которая прояснила проблему:
main/Main был скомпилирован более поздней версией Java Продолжительность

В этом случае jar был скомпилирован с версией, более новой, чем поддерживает jre.
Ответ 6
Я также столкнулся с той же проблемой. Посмотрев консоль, говорящую
Решение:
Проверьте название своего проекта.
Надеюсь, что ваша проблема будет решена. Если нет, то, пожалуйста, распечатайте трассировку консоли для отслеживания основной причины.
Ответ 7
Это может произойти, если версия JDK отличается.
попробуйте это с помощью maven:
в build- > плагинах:
Ответ 8
Сначала вы можете проверить консоль, чтобы увидеть фактическое сообщение об ошибке, а затем продолжить поиск ответов на эту ошибку.
Моя консоль показывает ошибку NoClassDefFound для класса jcommander. Вероятно, ваша ошибка будет отличаться от моей. Причина моей ошибки в том, что класс jcommander не находится в моем репозитории M2, поэтому мне просто нужно добавить эту зависимость в мой pom.xml. Вы можете проверить, все ли все зависимые классы объявлены и добавлены в текущую конфигурацию конфигурации и проекта.
Ответ 9
Привет, я столкнулся с аналогичной проблемой в проекте, в IntelliJ с зависимостями Maven.
Я решил, изменив область видимости зависимостей от предоставленной для компиляции.
IntelliJ:
Файл> Структура проекта> Модули> Зависимости> Область (предоставить для компиляции)
Ответ 10
Я обнаружил, что добавление этих строк кода в файл pom.xml проекта maven решает для меня похожие проблемы:
Ответ 11
У меня была эта проблема некоторое время, но теперь я понял это.
Оказывается, в Java JDK 12 есть и JRE, и JDK внутри папки bin Java 12 JDK. (Я всегда считал, что JRE и JDK — это разные приложения, но оказывается, что все изменилось)
Моя проблема заключалась в том, что на моем компьютере была установлена Java JDK 12
В то же время на моем компьютере была установлена Java 8 (JRE).
Так что мой компьютер запутался.
С моей настройкой среды командной строки для запуска команд Java и Javac:
Я набрал следующие команды:
//это дало мне Java 8
После этого я набрал:
//это дало мне Java 12
Другими словами, моя программа компилируется с Java 12, и я пытаюсь работать с Java 8.
Чтобы решить эту проблему, я удалил Java 8 JRE со своего компьютера.
Вернулся в командную строку, чтобы проверить, возвращают ли «java -version» и «javac -version» один и тот же номер версии, и да, он возвращает Java 12.
Попробовал перекомпилировать мою программу еще раз и запустить ее. Это сработало !!
Это сработало! Эврика !!
Ответ 12
Проверьте консоль. В нем говорится об ошибке java.lang.SecurityException. Измените свое имя пакета. Я изменил имя пакета с «java.assessment» на «assesment», и это сработало для меня. Если кто-то знает основную причину, сообщите мне, пожалуйста.
Ответ 13
ВОЗМОЖНОЕ РЕШЕНИЕ Если NONE этих решений сработало для вас, попробуйте это. Я, наконец, получил свою работу, удалив две папки «.metadata» и «.recommenders» в папке рабочей области. Вы можете найти путь к папке рабочей области, щелкнув «Файл» > «Переключить рабочее пространство» > «Другое» на панели инструментов приложения Eclipse.
Теперь я полный нуб, плачущий мой путь через степень SE в Университете штата Сан-Хосе. Поэтому я просто делюсь тем, что сработало для меня, не зная о том, почему именно. Я не знаю, какой вред или головные боли, или даже если обе вышеупомянутые папки необходимо удалить. Но, в конце концов, это сработало для меня, и кажется, что приложение просто обновляет новые версии этих папок в любом случае.
Ответ 14
Я столкнулся с аналогичной проблемой и получил решение в названии пакета. Я сохранил имя пакета как java.basics. В консоли я получил намек на это, так как ясно сказано, что имя запрещенного пакета. Поэтому я изменил имя пакета и работал.
Ответ 15
отредактируйте «.classpath» и включите тег ниже
<classpathentry kind=»con» path=»org.testng.TESTNG_CONTAINER»/>
это может решить вашу проблему.
Ответ 16
Надеюсь, это поможет кому-то другому. Я страдал этим, работая над проектом несколько лет назад, а затем работа над новым проектом начиналась неудачно несколько дней назад. Я нашел этот пост и пытался вспомнить, что я изменил в своем проекте, а затем я вспомнил, что я изменил свой maven pom и удалил запись для maven-jar-plugin. Когда вы создаете банку, цель которой должна быть исполняемой, вам нужно включить ее, чтобы некоторые записи записывались в манифест. Я открыл старый проект, скопировал эту запись (с некоторыми изменениями для названия проекта), и она сработала.
Ответ 17
Я думаю, это происходит потому, что имя вашего класса совпадает с именем другого класса в JDK. Помогите затмению определить, какой из них вы пытаетесь запустить, выбрав пакет, в котором находится ваш класс. Перейдите в выполнить конфигурацию, выберите проект и основной класс.
Когда вы нажмете кнопку поиска, чтобы выбрать основной класс, вы найдете параметры с таким же именем , но с другим пакетом, выберите свой класс.
Ответ 18
Моя проблема возникла из-за попытки отключить природу Maven в моем проекте, а затем удалить файл pom.xml . Это плохо, очень плохо, не делай этого. Если вы это сделаете, измените его обратно на проект Maven и, надеюсь, вы можете восстановить старый файл pom.xml или создать новый. Как только я это сделал, это снова заработало.
РЕДАКТИРОВАТЬ: я недавно столкнулся с этой проблемой снова, и на этот раз это было, потому что у меня были дубликаты библиотек в моем classpath. Тот, который добавил Maven (который начинался с /M2_REPO/. а затем тот, который я добавил (чего я не должен был делать). Несмотря на то, что Eclipse сообщал, что не может найти класс, реальная проблема заключалась в том, что у меня было дал ему две библиотеки с одним и тем же классом, и он не знал, какую из них использовать. Как только я удалил вторую ссылку, это сработало.
Ответ 19
В моей консоли не было никакой информации, поэтому я отправил поиск дополнительных решений и нашел их — уникальными для решений, представленных здесь. Я столкнулся с этим, когда Eclipse Oxygen пытался запустить старую сборку Ant для проекта.
Причина 1 Я настроил Eclipse для использования внешней установки Ant, которая была версии 1.10.2, в которой, по-видимому, были классы, скомпилированные с JDK 9. В Eclipse я получил ошибку JNI, описанную выше (запуск сборки Ant из командной строки дал мне известная ошибка «неподдерживаемая версия major.minor» — Java, которую я использовал в системе, был JDK 8).
Решением было откат до встроенной версии Ant Eclipse 1.10.1. Я проверил это как правильное решение, загрузив Ant 1.10.1 отдельно и перенастроив Eclipse для внешнего использования нового 1.10.1, и он все еще работал.
Причина 2 Это также может произойти, если у вас неправильно настроены параметры среды выполнения Ant в настройках Eclipse. В зависимости от версии Ant, с которой вы работаете, вам необходимо добавить tools.jar из соответствующего JDK в путь к классу, используемый для среды выполнения Ant (Home Entries). Более конкретно, без надлежащей конфигурации Eclipse будет жаловаться при запуске цели Ant, что версия JRE меньше определенной требуемой версии.
По сути, «правильная конфигурация» означает выравнивание каждого из элементов конфигурации в Eclipse для запуска Ant так, чтобы они все работали вместе. Это включает в себя запись Ant Runtime Home (должна указывать на версию Ant, совместимую с выбранным вами JDK — вы не можете запустить Ant с JDK 8, когда он был скомпилирован с JDK 9); указание tools.jar который принадлежит JDK, с которым вы хотите запустить Ant, в настройках Ant Runtime; и, наконец, настройку среды JRE вашего сценария сборки на JDK, с которым вы хотите запустить Ant в конфигурации внешних инструментов. Все 3 из этих настроек должны быть согласованы, чтобы избежать ошибки, описанной выше. Вам также нужно будет рассмотреть атрибуты, используемые в вашем теге javac чтобы убедиться, что используемый вами JDK способен выполнять в соответствии с вашими указаниями (т.е. JDK 7 не может компилировать код с использованием исходной и целевой версии 8).
Более того, если вы действительно пытаетесь запустить скрипт сборки Ant для компиляции кода в более старый JDK (например, менее 8 для Oxygen), эта статья помогла получить доступ к запуску Ant против более старого JDK. Существуют замены плагинов Ant для нескольких версий Eclipse, инструкции краткие, и важно получить правильную версию плагина для вашего конкретного Eclipse.
Или, проще говоря, вы можете использовать это очень хорошее решение для своей устаревшей компиляции, которая не требует замены вашего плагина Eclipse, но вместо этого изменяет тег javac в вашем скрипте сборки (при использовании последней версии JDK).
Ответ 20
Я столкнулся с той же ошибкой, когда я добавил в свой проект следующую зависимость maven:
Ошибка возникла только когда я запустил файл jar тени, созданный maven-shade-plugin. Я смог преодолеть ошибку, используя jar, созданный maven-assembly-plugin.
Ответ 21
У меня не все работает, но как только я удаляю «.metadata» и «.recommenders» из рабочей области, а также удаляю папки «bin» и «setting», а затем после повторного импорта того же проекта, это работает для меня.
Ответ 22
Столкнулся с такой же проблемой в Netbeans 8.0.2. Clean and Build Project решил эту проблему.
Ответ 23
Вы можете попробовать: щелкните правой кнопкой мыши на проекте, а затем нажмите кнопку очистки. После этого запустите проект.
Ответ 24
Программы, написанные для одной версии jdk, не будут поддерживать платформу JNI другой версии jdk. Если в этом случае мы используем jdk10 и jdk8, eclipse настроен для jdk10 и код написан на jdk10. Теперь я не хочу использовать jdk10 и начал использовать jdk8 в качестве jvm и пытался запустить код, который написан на jdk10, поэтому затмение произойдет из-за ошибки JNI. Итак, чтобы выйти из этой ошибки, пожалуйста, добавьте текущий путь JVM в файл eclipse.ini, после этого скопируйте записанный код в буфер обмена и удалите проект в eclipse, создайте новый проект, проверьте скопированный код и запустите.
Ответ 25
Если проблема возникает во время установки ANT, проверьте ваш ANT HOME: он должен указывать на ту же папку, в которой вы работаете.
Это случилось со мной, когда я переустанавливал новую версию eclipse и удалял previouis eclipse fodler, сохраняя предыдущий файл ant: ant просто не нашел никакой библиотеки java.
Это в данном случае причина не плохая версия JDK.
Ответ 26
У меня та же проблема. Может ли кто-нибудь предложить решение для этого.

Ответ 27
Я столкнулся с той же проблемой из-за того, что упакованное имя было «Java», после переименования имени пакета не выдается ошибка.
Ответ 28
У меня возникла та же проблема, однако в моем случае это было связано с настройками конфигурации в IntelliJ IDEA.
Несмотря на то, что SDK проекта (Файл → Структура проекта) был установлен на Java 11, JRE в Конфигурации запуска/отладки (Выполнить → Редактировать конфигурации) был установлен на Java 8. После изменения этого на Java 11 он работал как очарование.
Ответ 29
В моем случае Eclipse давал мне эту ошибку, но я получал исключение classnotfoundexception для javax.servlet.http.HttpServlet в журналах.
В моем случае я пытался запустить приложение весенней загрузки с exclude module: ‘spring-boot-starter-tomcat’ в моем build.gradle (так как я развертываю на Wildfly).
Решение было прокомментировать это исключить. Ошибка JNI затмения очень вводит в заблуждение, и я бы предложил исправить это.
Ответ 30
была такая же проблема. Я импортировал более новую версию библиотеки json (удалил старую, но не удалил ее из пути сборки). Решил это, удалив ссылку на старый из пути сборки