Я пытаюсь запустить простую клиент-серверную программу, написанную на 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: Произошла ошибка JNI, проверьте установку и повторите попытку Исключение в потоке "main" java.lang.UnsupportedClassVersionError: Тест был скомпилирован более новой версией среды выполнения Java (класс версия файла 55.0), эта версия Java Runtime распознает только версии файлов классов до 52.0 в java.lang.ClassLoader.defineClass1(Native Method) в java.lang.ClassLoader.defineClass(ClassLoader.java:763) в java.security .SecureClassLoader.defineClass(SecureClassLoader.java:142) по адресу java.net.URLClassLoader.defineClass(URLClassLoader.java:467) по адресу java.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(ClassLoade r.java:424) в sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) в java.lang.ClassLoader.loadClass(ClassLoader.java:357) в sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java :495)
Я пытался найти решение в 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