Ошибка: произошла ошибка JNI, пожалуйста, проверьте вашу установку и попробуйте еще раз - во время запуска программы Java из терминала Ubuntu - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь запустить простую клиент-серверную программу, написанную на Java, через терминал Ubuntu.К сожалению, я могу успешно скомпилировать код, но не могу запустить код.

Код класса сервера:

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server 
{
        public static void main(String[] args)
        {
                try 
                {
                        //create server Socket with demo port
                        ServerSocket server = new ServerSocket(20);

                        //wait for server connection
                        Socket s = server.accept();

                        //upon establishing connection, print 
                       // successful message
                        System.out.println("connection eastablished");
                } 
                catch (IOException e) 
                {
                        e.printStackTrace();
                }
        }
}

Код класса клиента:

import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client 
{
        public static void main(String[] args)
        {
                try 
                {
                        //create client socket
                        Socket client = new Socket("127.0.0.1", 20);

                        //upon establishing connection, print                            
                        //successful message
                        System.out.println("connection eastablished");

                } 
                catch (UnknownHostException e) 
                {
                        e.printStackTrace();
                } 
                catch (IOException e) 
                {
                        e.printStackTrace();
                }
        }
}

Во время работыв соответствии с классом, я получаю следующую ошибку:

mamun @ mamun: ~ $ java Test Error: Произошла ошибка JNI, пожалуйста, проверьте вашу установку и попробуйте снова Исключение в потоке "main"java.lang.UnsupportedClassVersionError: Test был скомпилирован более поздней версией Java Runtime (версия файла класса 55.0), эта версия Java Runtime распознает только версии файла класса до 52.0 в java.lang.ClassLoader.defineClass1 (NativeМетод) в java.lang.ClassLoader.defineClass (ClassLoader.java:763) в java.security.SecureClassLoader.defineClass (SecureClassLoader.java:142) в java.net.URLClassLoader.defineClass (URLClassLoader.java:4).net.URLClassLoader.access $ 100 (URLClassLoader.java:73) в java.net.URLClassLoader $ 1.run (URLClassLoader.java:368) в java.net.URLClassLoader $ 1.run (URLClassLoader.java:362) в java.security.AccessController.doPrivileged (собственный метод) в java.net.URLClassLoader.findClass (URLClassLoader.java:361) в java.lang.ClassLoader.loadClass (ClassLoader.java:4).misc.Launcher $ AppClassLoader.loadClass (Launcher.java:349) в java.lang.ClassLoader.loadClass (ClassLoader.java:357) в sun.launcher.LauncherHelper.checkAndLoadMain (Launcher * Helper.java:493 *

)*

Я пытался найти stackoverflow и другие форумы и блоги, чтобы найти решение, я нашел несколько похожих вопросов, попробовал ответы на этот вопрос, но смог найти решение для моей проблемы.Вот почему я добавляю этот вопрос сюда.

Позже я попытаюсь написать очень простую Java-программу, например, просто напечатать приветствие, эта программа также может быть скомпилирована, но не будет запускаться, производя то же самоеошибка.Я пытался запустить программу из разных папок, кроме из корневой папки.Но все усилия приводят к одному и тому же результату.

public class Test
{
        public static void main(String[] args)
                {
                        System.out.println("Hello...");
                }
}

Я могу отлично работать в Eclipse, где моя java версия 8, проблема возникает только при работе в терминале.

В моей версии Ubuntu jdk 11(который был автоматически обновлен без моего ведома);Моя версия Ubuntu: 18.04.1 LTS

1 Ответ

0 голосов
/ 05 октября 2018

Ошибка говорит само за себя:

Исключение в потоке "main" java.lang.UnsupportedClassVersionError: Тест был скомпилирован более поздней версией среды выполнения Java (версия файла класса 55.0)...

Вы скомпилировали для Java 11 ... но у вас установлена ​​более старая версия JRE (Java 8).

ПРЕДЛОЖЕНИЯ:

  • перекомпилируйте с -source и -target, чтобы указать более раннюю версию Java в вашем файле .class, или

  • Обновите целевой JRE до Java 11

ПРИМЕР: javac -target 8 -source 8 MyClass.java

К вашему сведению, это версии Java в заголовке каждого файла класса Java:

https://en.wikipedia.org/wiki/Java_class_file

  • Java SE 11 = 55 (0x37 шестнадцатеричный)
  • Java SE 10 = 54 (0x36 шестнадцатеричный)
  • Java SE 9 = 53 (0x35 шестнадцатеричный)
  • JavaSE 8 = 52 (0x34 hex)
  • Java SE 7 = 51 (0x33 hex)
  • Java SE 6.0 = 50 (0x32 hex)
  • Java SE 5.0 = 49 (0x31 hex)
  • JDK 1.4 = 48 (0x30 hex)
  • JDK 1.3 = 47 (0x2Fhex)
  • JDK 1.2 = 46 (0x2E hex)
  • JDK 1.1 = 45 (0x2D hex)

Также, к вашему сведению, это командная строкаопции для javac:

Java SE 11> Инструменты> javac

PS:

Вы можете иметь несколько независимых версий Java, установленных одновременно,Используйте команду альтернатив :

...