エラー:A JNIエラーが発生した、インストールを確認して、もう一度試してください - Ubuntuの端末からJavaプログラムを実行している間、

Mamun:

私はUbuntuの端子を介して、Javaで書かれたシンプルなクライアントサーバプログラムを実行しようとしています。私は、コードを実行することはできません、首尾残念ながらコードをコンパイルすることができます。

サーバ・クラスコード:

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のテストエラー:A JNIエラーが発生した、インストールを確認し、スレッド「メイン」java.lang.UnsupportedClassVersionErrorで再び例外を試してください:テストは、Javaランタイム(クラスの最新バージョンでコンパイルされていますファイルバージョン55.0)、Javaランタイムのこのバージョンでは唯一のjava.securityでjava.lang.ClassLoader.defineClass(ClassLoader.java:763)でjava.lang.ClassLoader.defineClass1(ネイティブメソッド)で52.0にクラスファイルのバージョンを認識し、 java.net.URLClassLoader $ 1でのjava.net.URLClassLoader.accessでjava.net.URLClassLoader.defineClass(URLClassLoader.java:467)で.SecureClassLoader.defineClass(SecureClassLoader.java:142)$ 100(URLClassLoader.java:73)。 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)でjava.lang.ClassLoader.loadClass(ClassLoader.java:424)でURLClassLoader.findClass(URLClassLoader.java:361) sun.launcher.LauncherHelper.checkAndLoadMainで(ClassLoader.java:357)(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

paulsm4:

エラーがそれをすべて言います:

スレッド「メイン」java.lang.UnsupportedClassVersionErrorの例外:テストは、Javaランタイム(クラスファイルのバージョン55.0)の最新バージョンでコンパイルされています...

あなたはJavaの11のためにコンパイルした...しかし、あなたは、古いJRE(Javaの8)を実行しています。

SUGGESTIONS:

  • 再コンパイル-sourceし、-targetあなたの.classファイル内のJavaの以前のバージョンをターゲットにしますか、

  • あなたのターゲットJREはJavaの11にアップグレード

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

FYI、これらは、それぞれの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の六角)
  • Java SEの8 = 52(0x34の六角)
  • Java SEの7 = 51(0x33の六角)
  • Java SEの6.0 = 50(0x32の六角)
  • Java SEの5.0 = 49(0x31進)
  • JDK 1.4 = 48(0x30から進)
  • JDK 1.3 = 47(0x2F六角)
  • JDK 1.2 = 46(0x2E六角)
  • JDK 1.1 = 45(0x2D六角)

またFYI、ここでjavacのためのコマンドラインオプションは以下のとおりです。

Java SEの11>ツール> javacの

PS:

あなたは、同時にインストールされているJavaの複数の独立したバージョンを有することができます。使用する代替のコマンドを:

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=179429&siteId=1