Erreur: Une erreur JNI s'est produite, veuillez vérifier votre installation et réessayer-pendant l'exécution du programme Java à partir du terminal Ubuntu


J'essaie d'exécuter un simple programme client-serveur écrit en Java via le terminal Ubuntu. Je pourrais compiler le code avec succès malheureusement, je ne peux pas exécuter le code.

Code de classe du serveur:

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();
                }
        }
}

Code de classe client:

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();
                }
        }
}

Pendant l'exécution de la classe complied, j'obtiens l'erreur suivante:

Mamun @ mamun: ~ Error erreur de test java: Une erreur JNI s'est produite, veuillez vérifier votre installation et réessayer Exception dans le fil " main" Java.lang.UnsupportedClassVersionError: Le test a été compilé par un version plus récente du Runtime Java (fichier de classe version 55.0), cette version du Runtime Java ne reconnaît que les versions des fichiers de classe jusqu'à 52.0 sur java.lang.Chargeur de classe.defineClass1 (Méthode native) à Java.lang.Chargeur de classe.defineClass (ClassLoader.java: 763) à Java.sécurité.SecureClassLoader.defineClass (SecureClassLoader.java: 142) dans java. net. URLClassLoader. defineClass(URLClassLoader. java: 467) à java.net.URLClassLoader.l'accès de 100$(URLClassLoader.java:73) à pour cela, vous pouvez utiliser la fonction URLClassLoader.java.net.URLClassLoader$1.exécuter(URLClassLoader. java:368) à pour cela, vous pouvez utiliser la fonction URLClassLoader.java.net.URLClassLoader$1.exécuter(URLClassLoader. java:362) à Java.sécurité.AccessController.doPrivileged (Méthode native) à vous pouvez également utiliser la fonction URLClassLoader (URLClassLoader.java:361) à Java.lang.Chargeur de classe.loadClass (Chargeur de classe.java:424) à soleil.misc.Lanceur App AppClassLoader.loadClass (Lanceur.java:349) à Java.lang.Chargeur de classe.loadClass (Chargeur de classe.java:357) à soleil.lanceur.LauncherHelper.checkAndLoadMain (LauncherHelper.java: 495)

J'ai essayé de rechercher stackoverflow et d'autres forums et blogs pour trouver une solution, j'ai trouvé des questions similaires, j'ai essayé les réponses fournies à ces questions mais j'ai pu trouver une solution à mon problème. C'est pourquoi j'ajoute cette question ici.

Plus tard, j'ai essayé d'écrire un programme Java très simple, comme juste pour imprimer un message d'accueil, ceci le programme pourrait également être compilé mais ne s'exécuterait pas produisant la même erreur. J'ai essayé d'exécuter le programme à partir de différents dossiers, sauf à partir du dossier racine. Mais tous les efforts produisent le même résultat.

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

Je peux parfaitement travailler dans Eclipse où ma version java 8, le problème ne se produit que lorsque je travaille dans le terminal.

Dans ma version Ubuntu jdk est 11 (qui a été automatiquement mis à jour à mon insu); Ma version Ubuntu: 18.04.1 LTS

Author: Mamun, 2018-10-05

1 answers

L'erreur dit:

Exception dans le thread "main" java.lang.UnsupportedClassVersionError: Test a été compilé par une version plus récente du Runtime Java (fichier de classe version 55.0)...

Vous avez compilé pour Java 11 ... mais vous utilisez un ancien JRE (Java 8).

SUGGESTIONS:

  • Recompiler avec -source et -target pour cible une version antérieure de Java dans votre .fichier de classe, ou

  • Mettez à niveau votre JRE cible vers Java 11

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

Pour info, ce sont les versions Java dans l'en-tête de chaque fichier de classe Java:

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

  • Java SE 11 = 55 (0x37 hex)
  • Java SE 10 = 54 (0x36 hex)
  • Java SE 9 = 53 (0x35 hex)
  • Java SE 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 (0x2F hex)
  • JDK 1.2 = 46 (0x2e hex)
  • JDK 1.1 = 45 (0x2D hex)

Aussi pour INFO, voici les options de ligne de commande pour javac:

Java SE 11 > Outils > javac

PS:

Vous pouvez avoir plusieurs versions indépendantes de Java installées en même temps. Utiliser les alternatives commande:

 8
Author: paulsm4, 2018-10-06 05:50:59