Задать вопрос

Как разрешить ошибку «A JNI error has occurred, please check your installation and try again» при компиляции java программы?

Я новичок в изучении Java. Пытаюсь запустить "hello world!" Пример того, что я запускаю ниже.
class hello {

	public static void main(String args[]) {

		System.out.println("Hello, world!");

	}

}

Javac компилирует, но созданный класс не интрепретируется. Выдается следующая ошибка:
***:~/Documents/JavaSampl$ javac hello.java
***:~/Documents/JavaSampl$ java hello
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: 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
	at java.lang.ClassLoader.defineClass1(java.base@9-internal/Native Method)
	at java.lang.ClassLoader.defineClass(java.base@9-internal/ClassLoader.java:939)
	at java.security.SecureClassLoader.defineClass(java.base@9-internal/SecureClassLoader.java:152)
	at jdk.internal.loader.BuiltinClassLoader.defineClass(java.base@9-internal/BuiltinClassLoader.java:553)
	at jdk.internal.loader.BuiltinClassLoader.access$200(java.base@9-internal/BuiltinClassLoader.java:88)
	at jdk.internal.loader.BuiltinClassLoader$3.run(java.base@9-internal/BuiltinClassLoader.java:466)
	at jdk.internal.loader.BuiltinClassLoader$3.run(java.base@9-internal/BuiltinClassLoader.java:460)
	at java.security.AccessController.doPrivileged(java.base@9-internal/Native Method)
	at jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(java.base@9-internal/BuiltinClassLoader.java:459)
	at jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(java.base@9-internal/BuiltinClassLoader.java:406)
	at jdk.internal.loader.BuiltinClassLoader.loadClass(java.base@9-internal/BuiltinClassLoader.java:364)
	at jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(java.base@9-internal/ClassLoaders.java:184)
	at java.lang.ClassLoader.loadClass(java.base@9-internal/ClassLoader.java:419)
	at sun.launcher.LauncherHelper.loadMainClass(java.base@9-internal/LauncherHelper.java:585)
	at sun.launcher.LauncherHelper.checkAndLoadMain(java.base@9-internal/LauncherHelper.java:497)

Подскажите как это решить. Заранее спасибо!
  • Вопрос задан
  • 70421 просмотр
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
MrLinder
@MrLinder
Programmer C++
В переменных средах у вас по списку первее стоит:

C:\Program Files (x86)\Common Files\Oracle\Java\javapath


а в конце путь до jdk:

C:\Program Files\jdk\bin

Поэтому операционная система когда ищет 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\
Ответ написан
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Не надо быть профи в Java, достаточно уметь пользоваться переводчиком
5b509b2f2253c351493968.png
Вы компилируете с помощью Java 10, а запускать пытаетесь с помощью Java 9.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы