web-dev-qa-db-fra.com

Une erreur JNI s’est produite. Veuillez vérifier votre installation et réessayer dans Eclipse x86 Windows 8.1.

public class LoginCumReg implements ActionListener,KeyListener {
    private JFrame form;
    private JTextField txtunm;
    private JTextField txtnm;
    private JTextField txteml;
    private JButton cmdcreate;
    private JPasswordField txtpass;
    private JPasswordField txtpassreg;
    private JButton cmdok;
    private JLabel lblunm;
    private JLabel lblpass;
    private JLabel lbleml;
    private JLabel lblpassreg;
    private JLabel lblnm;
    private JPanel panel_1;
public LoginCumReg() {
    // construct components
    form = new JFrame("Sign Up");
    form.getContentPane().setFont(
            new Font("Plantagenet Cherokee", Font.BOLD, 18));
    txtunm = new JTextField(5);
    txtunm.addKeyListener(this);
    txtunm.setBounds(637, 55, 100, 25);
    txtnm = new JTextField(5);
    txtnm.setBounds(637, 228, 100, 25);
    txteml = new JTextField(5);
    txteml.setBounds(637, 264, 100, 25);
    cmdcreate = new JButton("Create Account");
    cmdcreate.setBounds(527, 350, 188, 25);
    txtpass = new JPasswordField(5);
    txtpass.setBounds(637, 91, 100, 25);
    txtpassreg = new JPasswordField(5);
    txtpassreg.setBounds(637, 300, 100, 25);
    cmdok = new JButton("OK");
    cmdok.setBounds(527, 139, 100, 25);
    lblunm = new JLabel("UserName");
    lblunm.setBounds(527, 55, 73, 25);
    lblpass = new JLabel("Password");
    lblpass.setBounds(527, 91, 100, 25);
    lbleml = new JLabel("Email ID");
    lbleml.setBounds(527, 264, 100, 25);
    lblpassreg = new JLabel("Password");
    lblpassreg.setBounds(527, 300, 100, 25);
    lblnm = new JLabel("Full Name");
    lblnm.setBounds(527, 228, 100, 25);

    // form.setResizable(false);

    // adjust size and set layout
    form.setPreferredSize(new Dimension(800, 450));

    form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    form.getContentPane().setLayout(null);

    // add components
    form.getContentPane().add(txtunm);
    form.getContentPane().add(txtnm);
    form.getContentPane().add(txteml);
    form.getContentPane().add(cmdcreate);
    form.getContentPane().add(txtpass);
    form.getContentPane().add(txtpassreg);
    form.getContentPane().add(cmdok);
    form.getContentPane().add(lblunm);
    form.getContentPane().add(lblpass);
    form.getContentPane().add(lbleml);
    form.getContentPane().add(lblpassreg);
    form.getContentPane().add(lblnm);

    cmdcreate.setActionCommand("Create Account");
    cmdcreate.addActionListener(this);
    cmdok.setActionCommand("Login");

    JPanel panel = new JPanel();
    panel.setBounds(502, 29, 254, 154);
    panel.setFont(new Font("Palatino Linotype", Font.PLAIN, 14));
    panel.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.RAISED,
            null, null), "LOGIN", TitledBorder.LEADING, TitledBorder.TOP,
            null, null));
    panel.setBackground(SystemColor.controlHighlight);
    form.getContentPane().add(panel);

    panel_1 = new JPanel();
    panel_1.setBounds(500, 204, 254, 186);
    panel_1.setFont(new Font("Palatino Linotype", Font.PLAIN, 14));
    panel_1.setBorder(new TitledBorder(new EtchedBorder(
            EtchedBorder.RAISED, null, null), "SIGN UP",
            TitledBorder.LEADING, TitledBorder.TOP, null, null));
    panel_1.setBackground(SystemColor.controlHighlight);
    form.getContentPane().add(panel_1);

    JLabel lblNewLabel = new JLabel("New label");
    lblNewLabel.setBounds(91, 139, 286, 101);
    lblNewLabel.setIcon(new ImageIcon(
            "C:\\Users\\JAsh\\Desktop\\Projects\\JAsh.png"));
    form.getContentPane().add(lblNewLabel);

    JPanel panel_2 = new JPanel();
    panel_2.setBounds(77, 118, 315, 145);
    panel_2.setBorder(new EtchedBorder(EtchedBorder.RAISED,
            SystemColor.activeCaptionBorder, SystemColor.menu));
    panel_2.setBackground(SystemColor.controlHighlight);
    form.getContentPane().add(panel_2);
    cmdok.addActionListener(this);

    form.setResizable(false);
    form.pack();
    form.setVisible(true);
    System.out.println("const..");
}

public static void main(String[] args) {
    new LoginCumReg();
}

@Override
public void actionPerformed(ActionEvent ae) {
    // TODO Auto-generated method stub

    if (ae.getActionCommand().equals("Create Account")) {
        new Registration(txtnm.getText(), txteml.getText(), new String(
                txtpassreg.getPassword()));
        form.setVisible(false);
    }

    if (ae.getActionCommand().equals("Login")) {
        try {
            if (txtunm.getText().equalsIgnoreCase("admin")
                    && new String(txtpass.getPassword()).equals("admin")) {
                form.setVisible(false);
                new Admin();
            } else {
                DataBase db = new DataBase();
                db.connect();
                String sql = "SELECT * FROM LOGIN WHERE USERNAME='"
                        + txtunm.getText() + "'";
                ResultSet rs = db.getDDL(sql);
                boolean found = false;
                while (rs.next()) {
                    if (rs.getString("Password").equals(
                            new String(txtpass.getPassword()))) {
                        found = true;
                        form.setVisible(false);
                        String name = rs.getString("FullName");
                        Session.startSession(txtunm.getText(), name);
                        new FacultyWelcome();
                    }
                }
                if (!found)
                    JOptionPane.showMessageDialog(new JFrame(),
                            "Invalid Credentials");
                db.close();
            }
        } catch (Exception e) {
        }
    }

}

@Override
public void keyPressed(KeyEvent arg0) {
    // TODO Auto-generated method stub
}

@Override
public void keyReleased(KeyEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void keyTyped(KeyEvent arg0) {
    // TODO Auto-generated method stub
//  JOptionPane.showMessageDialog(new JFrame(), arg0.getKeyChar()+"-"+arg0.getKeyCode());

}

}

Le code ci-dessus fonctionne parfaitement sur le portable de mon ami et renvoie cette erreur sur mon portable. J'ai exécuté le code sur Eclipse Juno sous Java 7. J'ai également testé et exécuté de nombreux programmes Java sur mon ordinateur portable, et tout fonctionne bien. C'est le seul programme qui donne une telle erreur. Ceci est mon projet de dernière année et j'en ai besoin pour travailler sur mon ordinateur portable. Je serai reconnaissant à quiconque m'aidera.

22
Jash Parekh

Réponse courte: Faites un clic droit sur la classe qui contient la méthode principale. Cliquez sur "Run As". Cliquez sur "Application Java". Le raccourci clavier est le suivant: Maj + Alt + X J (tout en maintenant les touches Shift et Alt enfoncées, appuyez sur X; relâchez les touches Maj et Alt et appuyez sur J).

Réponse longue: Pour être honnête, je ne suis pas sûr à 100% pourquoi ce problème se produit. C'est peut-être à cause de l'utilisation d'un jdk différent. J'ai fait face à la même erreur. La solution était plus simple que ce que j'avais imaginé. J'étais habitué à exécuter mon code avec Ctrl + F11. Mais lorsque je l'ai exécuté en tant qu'application Java (comme je l'ai décrit dans la "réponse courte"), le problème a été résolu. Je ne sais pas si cela résout également les problèmes des autres peuples, mais cela vaut la peine d'essayer. :)

21
Navid Vafaei

J'ai rencontré des problèmes similaires lors de l'utilisation de 'Java' au début du nom du package, par exemple. Java.jem.pc

Vérifiez votre sortie de console, je recevais: Exception dans le fil "principal" Java.lang.SecurityException: Nom du package interdit: Java.jem.pc

6
CoDeSigns

Erreur: Une erreur JNI s’est produite. Veuillez vérifier votre installation et réessayer dans Eclipse

Solution: Vérifiez le nom de votre paquet car il peut entrer en conflit avec le nom du paquet en Java. Changez simplement le nom du paquet pour résoudre votre problème. :)

4
user8472395

J'ai aussi fait face au même problème. En regardant la console qui dit

Problème Java.lang.SecurityException.

la La solution est:

Vérifiez le nom de votre paquet de votre projet.

J'espère que votre problème sera résolu. Sinon, imprimez votre trace de la console pour suivre la cause première.

3
user3852778

Dans mon cas, le problème était dû à la version JDK. Pour résoudre ce problème, je suggère d'aller dans votre fichier pom et de vérifier le <jdk.version>1.7</jdk.version>. 

Ensuite, vérifiez la version de Java dans votre cmd (Windows) ou votre terminal (OSX ou LINUX) en tapant: Java -version.

Comparez la version indiquée dans l'invite terminal\command avec ce que vous avez dans votre fichier pom. Assurez-vous qu'ils sont les mêmes. Puis relancez votre projet.

3
DvixExtract

Cela peut arriver si la version du JDK est différente.

essayez ceci avec maven:

<properties>
    <jdk.version>1.8</jdk.version>
</properties>

sous build-> plugins:

<plugin>

    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>${jdk.version}</source>
        <target>${jdk.version}</target>
    </configuration>

</plugin>
2
erank

SOLUTION POSSIBLE Si AUCUNE de ces solutions ne fonctionnait pour vous, essayez ceci ... J'ai enfin réussi à faire fonctionner le mien en supprimant les deux dossiers ".metadata" & ".recommenders" dans le dossier de l'espace de travail. . Vous pouvez trouver le chemin du dossier de votre espace de travail en cliquant sur "Fichier"> "Basculer espace de travail"> "Autre" dans la barre d'outils de l'application Eclipse.

Maintenant, je suis un noob complet qui pleure mon chemin à travers un diplôme de SE à la San Jose State University. Donc, je ne fais que partager ce qui a fonctionné pour moi sans trop savoir pourquoi. Je ne sais pas quel mal ou maux de tête, ni même si les deux dossiers susmentionnés devaient être supprimés. Mais au final, cela a fonctionné pour moi et il semble que l’application ne fait que recréer de nouvelles versions de ces dossiers.

1
Muhammad Soroya

J'ai constaté que l'ajout de ces lignes de code au fichier pom.xml du projet maven résout des problèmes similaires pour moi: -

<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.packagename.MainClassName</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <createDependencyReducedPom>false</createDependencyReducedPom>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
1
Jasmohan

Vérifiez votre console. Il dit problème Java.lang.SecurityException. Changez votre 'nom du paquet'. J'ai changé le nom de mon paquet de 'Java.assessment' en 'assesment' et cela a fonctionné pour moi. Si quelqu'un connaît la cause, informez-moi s'il vous plaît.

1
Keshav Bisarwal

Vous pouvez d'abord vérifier la console pour voir le message d'erreur réel, puis rechercher les réponses à cette erreur. 

Ma console affiche l'erreur NoClassDefFound pour la classe jcommander . Votre erreur sera probablement différente de la mienne. La cause de mon erreur est que la classe jcommander ne se trouve pas dans mon référentiel M2, je dois donc simplement ajouter cette dépendance dans mon pom.xml. Vous pouvez vérifier si toutes les dépendances de classe sont toutes déclarées et ajoutées dans votre configuration actuelle de projet et de configuration.

NoClassDefFoundError

1
Miguel Ormita

Lancer le fichier depuis la ligne de commande en:

C:\folder\where\jar\stored>Java -jar JarName.jarJ'ai eu l'information qui rend le problème plus clair: 

main/Main a été compilé par une version plus récente de Java Runtime

 enter image description here

Dans ce cas, jar a été compilé avec une version plus récente que celle prise en charge par jre. 

1
c0der

Vous pouvez essayer: Faites un clic droit sur le projet puis cliquez sur nettoyer. Après cela, lancez le projet.

Ça marche pour moi.

0
lupin

Tout n'est pas un travail pour moi, mais une fois que j'ai supprimé les ".metadata" & ".recommenders" de l'espace de travail et supprimé les dossiers "bin" et "setting", puis après avoir réimporté le même projet, cela a fonctionné pour moi.

0

J'espère que cela aide quelqu'un d'autre. Je souffrais de cela alors que je travaillais sur un projet il y a quelques années, puis un emploi dans un projet plus récent a commencé à échouer il y a quelques jours. J'ai trouvé ce post et j'essayais de me rappeler ce que j'avais modifié dans mon projet, puis je me suis rappelé que j'avais changé mon pom maven et supprimé l'entrée pour maven-jar-plugin. Lorsque vous créez un fichier jar dont le but est d'être exécutable, vous devez l'inclure afin que certaines entrées soient écrites dans le manifeste. J'ai ouvert l'ancien projet, copié cette entrée (avec quelques modifications pour le nom du projet) et cela a fonctionné. 

0
Eric Forte

Bonjour, j’ai rencontré le même problème avec un projet dans IntelliJ avec des dépendances Maven.

Je l'ai résolu en changeant la portée des dépendances fournies à compiler. 

IntelliJ :

Fichier> Structure du projet> Modules> Dépendances> scope (fourni à Compile)

0
Salvador Vigo

Si le problème survient lors du lancement d'un ANT, vérifiez votre ANT HOME: il doit pointer vers le même dossier Eclipse que vous exécutez.

Cela m’est arrivé lors de la réinstallation d’une nouvelle version d’Eclipse et de la suppression du chargeur précédent d’Eclipse tout en conservant la version précédente de ant: Ant n’a tout simplement pas trouvé de bibliothèque Java.

Dans ce cas, la raison n’est pas une mauvaise version du JDK.

0
ntucci

A fait face au même problème dans Netbeans 8.0.2. Clean and Build Project a résolu ce problème.

0
Michu93

éditer le ".classpath" et inclure la balise ci-dessous

<classpathentry kind="con" path="org.testng.TESTNG_CONTAINER"/>

cela pourrait résoudre votre problème.

0

Je pense que cela se produit car le nom de votre classe est identique à celui d'une autre classe du JDK. Aidez Eclipse à déterminer lequel vous essayez d’exécuter en sélectionnant le package dans lequel se trouve votre classe. Allez dans exécuter la configuration sélectionnez le projet et la classe main.

Lorsque vous appuyez sur le bouton de recherche pour sélectionner la classe principale, vous trouvez des options portant le même nom mais un package différent. Sélectionnez votre classe.

0
Mohamed Abdelmagid

Mon problème provenait d'une tentative de désactivation de la nature Maven de mon projet, puis de la suppression du fichier pom.xml. C'est mauvais, très mauvais, ne fais pas ça. Si vous le faites, rétablissez-le en un projet Maven et espérons pouvoir restaurer votre ancien fichier pom.xml ou en créer un nouveau. Dès que j'ai fait ça, ça a encore fonctionné.

EDIT: J'ai récemment rencontré à nouveau ce problème et cette fois c'était parce que j'avais des bibliothèques en double dans mon classpath. Celui que Maven a ajouté (qui a commencé par/M2_REPO/... et un que j’avais ajouté (ce que je n’aurais pas dû faire). Même si Eclipse signalait qu’il ne pouvait pas trouver la classe, le problème était que j’avais lui ayant donné deux bibliothèques avec la même classe et ne sachant pas laquelle utiliser, une fois la deuxième référence supprimée, cela a fonctionné.

0
Chris C

J'ai rencontré un problème similaire et la solution a été trouvée dans le nom du package ..__ J'ai gardé le nom du package sous le nom Java.basics. Dans la console, j'ai eu un indice pour cela car il était clairement indiqué le nom du paquet interdit. J'ai donc changé le nom du paquet et cela a fonctionné.

0
H S Rathore

J'ai rencontré la même erreur lorsque j'ai ajouté la dépendance maven suivante dans mon projet:

<artifactId>aws-encryption-sdk-Java</artifactId>

L'erreur est survenue uniquement lorsque j'ai exécuté le fichier jar de l'ombre produit par maven-shade-plugin . J'ai pu surmonter l'erreur en utilisant le fichier jar produit par maven-Assembly-plugin .

0
Ioannis Tsiokos

Les programmes qui ont été écrits sur une version de jdk ne supporteront pas la plate-forme JNI d’une autre version de jdk. Si nous utilisons jdk10 et jdk8, Eclipse est configuré pour jdk10 et écrit sur jdk10. Maintenant, je ne veux pas utiliser jdk10 et j'ai commencé à utiliser jdk8 en tant que jvm et j'ai essayé d'exécuter le code qui est écrit sur jdk10. Eclipse utilisera donc l'erreur de JNI. Donc, pour remédier à cette erreur, veuillez ajouter le chemin actuel de la JVM au fichier Eclipse.ini, puis copier le code écrit dans le presse-papiers, supprimer le projet dans Eclipse, créer un nouveau projet et archiver le code copié, puis le lancer.

0
Kuber Pujar

Il n'y avait aucune information dans ma console, ce qui m'a alors amené à chercher d'autres solutions et à les trouver - uniques aux solutions présentées ici. J'ai rencontré ce problème avec Eclipse Oxygen en essayant de gérer une vieille version Ant basée sur un projet.

Cause 1 J'avais configuré Eclipse pour utiliser une installation Ant externe, version 1.10.2, qui contenait apparemment des classes compilées avec JDK 9. Dans Eclipse, l'erreur JNI décrite ci-dessus (exécution du La construction Ant sur la ligne de commande m’a donné la fameuse erreur «version non prise en charge de major.minor» - le code Java que j’utilisais sur le système était JDK 8).

La solution consistait à revenir à la version intégrée Eclipse de Ant, à savoir 1.10.1. J'ai vérifié que c'était la bonne solution en téléchargeant Ant 1.10.1 séparément et en reconfigurant Eclipse pour utiliser la nouvelle version 1.10.1 en externe et cela fonctionnait toujours.

Cause 2 Cela peut également se produire lorsque les paramètres Ant Runtime sont configurés de manière incorrecte dans les préférences d'Eclipse. Selon la version de Ant que vous exécutez, vous devrez ajouter le fichier tools.jar du JDK approprié au chemin d'accès aux classes utilisé pour Ant Runtime (Home Entrries). Plus spécifiquement, sans configuration appropriée, Eclipse se plaindra lors du lancement d'une cible Ant que la version de JRE est inférieure à une version requise particulière.

Essentiellement, "configuration correcte" signifie aligner chacun des éléments de configuration dans Eclipse pour exécuter Ant afin qu'ils fonctionnent tous ensemble. Ceci implique l'entrée Ant Runtime Home (il doit pointer sur une version Ant compatible avec le JDK choisi - vous ne pouvez pas exécuter Ant avec JDK 8 lorsqu'il a été compilé avec JDK 9); en spécifiant le tools.jar appartenant au JDK avec lequel vous souhaitez exécuter Ant dans les paramètres Ant Runtime; et enfin, en définissant l'environnement JRE de votre script de génération sur le JDK avec lequel vous souhaitez exécuter Ant dans la configuration des outils externes. Ces 3 paramètres doivent être compatibles pour éviter l'erreur décrite ci-dessus. Vous devez également prendre en compte les attributs utilisés dans votre balise javac pour vous assurer que le JDK que vous utilisez est capable de s'exécuter selon vos instructions (c'est-à-dire que JDK 7 ne peut pas compiler du code avec la version 8 source et cible).

De plus Si vous essayez vraiment d'exécuter un script de génération Ant pour compiler le code d'un ancien JDK (par exemple, moins de 8 pour Oxygen), cet article a permis d'accéder à exécuter Ant contre un ancien JDK . Il existe des remplacements de plug-in Ant pour une poignée de versions d'Eclipse, les instructions sont brèves et il est important d'obtenir la version de plug-in adaptée à votre Eclipse.

Ou (plus simplement} _ vous pouvez utiliser cette très bonne solution pour compiler votre héritage qui ne nécessite pas de remplacer votre plug-in Eclipse, mais de changer la balise javac dans votre script de construction (tout en utilisant le dernier JDK ).

0
dan

J'ai rencontré le même problème car le nom du paquet était "Java" après que le nom du paquet ait été renommé, cela ne provoquait pas d'erreur.

0
kiran