오류 : JNI 오류가 발생했습니다, 설치를 확인하십시오 다시 시도 - 우분투 터미널에서 자바 프로그램을 실행하는 동안

Mamun :

나는 우분투 터미널을 통해 자바로 작성된 간단한 클라이언트 - 서버 프로그램을 실행하기 위해 노력하고있어. 내가 코드를 실행할 수 없습니다 성공적으로 불행하게도 코드를 컴파일 할 수있다.

서버 클래스 코드 :

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 : ~ $ 자바 테스트 오류, • JNI 오류가 발생했습니다, 설치를 확인하고 스레드 "주요"java.lang.UnsupportedClassVersionError 다시 예외를 따르세요 테스트 자바 런타임의 최신 버전으로 컴파일 된 (클래스 파일 버전 55.0)는 자바 런타임의 버전은 java.security에서 java.lang.ClassLoader.defineClass (ClassLoader.java:763에서 java.lang.ClassLoader.defineClass1 (기본 방법))에서 52.0까지의 클래스 파일 버전을 인식 이는 java.net.URLClassLoader에서 java.net.URLClassLoader.access에서 java.net.URLClassLoader.defineClass (URLClassLoader.java:467)에서 .SecureClassLoader.defineClass (SecureClassLoader.java:142) $ 50 (URLClassLoader.java:73) $ 1이다. java.net에서 java.security.AccessController.doPrivileged (기본 방법)에서 $ 1.run (URLClassLoader.java:362) 이는 java.net.URLClassLoader에서 (URLClassLoader.java:368)를 실행합니다.java.lang.ClassLoader.loadClass에서 sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:349)에서 URLClassLoader.findClass java.lang.ClassLoader.loadClass (ClassLoader.java:424)에서 (URLClassLoader.java:361) sun.launcher.LauncherHelper.checkAndLoadMain에서 (ClassLoader.java:357) (LauncherHelper.java:495)

내가 몇 가지 비슷한 질문을 발견했습니다, 해결책을 찾기 위해 유래 및 기타 포럼과 블로그를 검색하려고 시도하는 질문에 제공하는 답변을하지만 내 문제에 대한 해결책을 찾을 수있는했습니다. 내가 여기에이 질문을 추가 해요 이유입니다.

나중에, 나는 단지 인사말을 인쇄 할 수처럼 아주 간단한 자바 프로그램을 작성하는 것이 컴파일 될 수있는이 프로그램을 시도했지만 같은 오류를 생산 실행하지 않을 것입니다. 나는 루트 폴더를 제외한 다른 폴더로 프로그램을 실행하려고했습니다. 그러나이 모든 노력은 동일한 결과를 생성합니다.

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

터미널에서 작업 할 때 내 자바 버전 8, 문제가 발생합니다 어디 완벽하게 이클립스에서 작업 할 수 있습니다.

내 우분투 JDK 버전 (자동으로 내 지식없이 업데이트 된) 11; 내 우분투 버전 : 18.04.1 LTS

paulsm4 :

이 오류는 모든 것을 말한다 :

스레드에서 예외가 "기본"java.lang.UnsupportedClassVersionError : 테스트는 자바 런타임의 최신 버전 (클래스 파일 버전 55.0)에 의해 컴파일 된 ...

당신은 자바 (11)에 대해 컴파일했습니다 ...하지만 당신은 이전 JRE (자바 8)를 실행하고 있습니다.

제안 :

  • 다시 컴파일 -source하고 -target당신을 .class 파일에 자바의 이전 버전을 대상으로, 또는

  • 자바 (11)에 대상 JRE 업그레이드

예: javac -target 8 -source 8 MyClass.java

참고로, 이들은 각각의 자바 클래스 파일의 헤더에있는 자바 버전은 다음과 같습니다

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

  • 자바 SE 11 = 55 (0x37 진수)
  • 자바 SE 10 = 54 (0x36 진수)
  • 자바 SE 9 = 53 (0x35 진수)
  • 자바 SE 8 = 52 (0x34 진수)
  • 자바 SE 7 = 51 (0x33을 16 진수)
  • 자바 SE 6.0 = 50 (설정 0x32 16 진수)
  • 자바 SE 5.0 = 49 (0x31로 회신 진수)
  • JDK 1.4 = 48 (0x30의 16 진수)
  • JDK 1.3 = 47 (0x2F의 16 진수)
  • JDK 1.2 = 46 (0x2E 헥스)
  • JDK 1.1 = 45 (0x2D 헥스)

또한 참고로, 여기 javac의에 대한 명령 줄 옵션은 다음과 같습니다

자바 SE 11> 도구> javac의

추신:

자바가 동시에 설치의 여러 독립적 인 버전이있을 수 있습니다. 사용 대안의 명령을 :

추천

출처http://43.154.161.224:23101/article/api/json?id=179427&siteId=1