Произошла ошибка JNI, проверьте свою установку и повторите попытку в 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());

}

}

Приведенный выше код отлично работает на моем ноутбуке для друга и бросает эту ошибку на моем ноутбуке. Я запускаю код на Eclipse Juno, используя Java 7. Я также тестировал и запускал много java-программ на моем ноутбуке, все работает хорошо. Это единственная программа, которая дает такую ​​ошибку. Это мой последний проект, и мне нужно, чтобы он работал на моем ноутбуке, я буду благодарен всем, кто помогает.

Ответ 1

Краткий ответ: Щелкните правой кнопкой мыши класс, который содержит метод main. Нажмите "Выполнить как". Нажмите на "Java-приложение". Сочетание клавиш: Shift + Alt + X J (удерживая Shift и Alt, нажмите X; затем отпустите Shift и Alt и нажмите J).

Длинный ответ: Если честно, я не уверен на 100%, почему возникает эта проблема. Это может быть из-за использования другого JDK. Я столкнулся с той же ошибкой. Решение оказалось проще, чем я предполагал. Я привык запускать свой код с помощью Ctrl + F11. Но когда я запустил его как приложение Java (как я описал в "кратком ответе"), проблема была решена. Я не уверен, что это решает проблемы других людей, но стоит попробовать. :)

Ответ 2

Ошибка: Произошла ошибка JNI, проверьте свою установку и повторите попытку в Eclipse

Решение: Проверьте имя своего пакета, поскольку оно может сталкиваться с именем пакета в java. Просто измените имя пакета, чтобы решить проблему.:)

Ответ 3

У меня были подобные проблемы при использовании "java" в начале имени пакета, например. java.jem.pc

Проверьте вывод консоли, я получаю: Исключение в потоке "main" java.lang.SecurityException: Запрещено имя пакета: java.jem.pc

Ответ 4

В моем случае проблема была вызвана версией JDK. Чтобы решить эту проблему, я предлагаю перейти в ваш файл pom и проверить <jdk.version>1.7</jdk.version>.

Затем проверьте версию java в вашем cmd (windows) или терминале (OSX или LINUX), введя: java -version.

Сравните версию, показанную в командной строке терминала\с тем, что у вас есть в вашем файле pom. Убедитесь, что они одинаковые. Затем запустите проект снова.

Ответ 5

Запуск банки из командной строки:

C:\folder\where\jar\stored>java -jar JarName.jar

Я получил информацию, которая прояснила проблему:

main/Main был скомпилирован более поздней версией Java Продолжительность

enter image description here

В этом случае jar был скомпилирован с версией, более новой, чем поддерживает jre.

Ответ 6

Я также столкнулся с той же проблемой. Посмотрев консоль, говорящую

Проблема java.lang.SecurityException.

Решение:

Проверьте название своего проекта.

Надеюсь, что ваша проблема будет решена. Если нет, то, пожалуйста, распечатайте трассировку консоли для отслеживания основной причины.

Ответ 7

Это может произойти, если версия JDK отличается.

попробуйте это с помощью maven:

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

в build- > плагинах:

<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>

Ответ 8

Сначала вы можете проверить консоль, чтобы увидеть фактическое сообщение об ошибке, а затем продолжить поиск ответов на эту ошибку.

Моя консоль показывает ошибку NoClassDefFound для класса jcommander. Вероятно, ваша ошибка будет отличаться от моей. Причина моей ошибки в том, что класс jcommander не находится в моем репозитории M2, поэтому мне просто нужно добавить эту зависимость в мой pom.xml. Вы можете проверить, все ли все зависимые классы объявлены и добавлены в текущую конфигурацию конфигурации и проекта.

NoClassDefFoundError

Ответ 9

Привет, я столкнулся с аналогичной проблемой в проекте, в IntelliJ с зависимостями Maven.

Я решил, изменив область видимости зависимостей от предоставленной для компиляции.

IntelliJ:

Файл> Структура проекта> Модули> Зависимости> Область (предоставить для компиляции)

Ответ 10

Я обнаружил, что добавление этих строк кода в файл pom.xml проекта maven решает для меня похожие проблемы:

<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>

Ответ 11

У меня была эта проблема некоторое время, но теперь я понял это.

Оказывается, в Java JDK 12 есть и JRE, и JDK внутри папки bin Java 12 JDK. (Я всегда считал, что JRE и JDK - это разные приложения, но оказывается, что все изменилось)

Моя проблема заключалась в том, что на моем компьютере была установлена Java JDK 12

В то же время на моем компьютере была установлена Java 8 (JRE).

Так что мой компьютер запутался.

С моей настройкой среды командной строки для запуска команд Java и Javac:

Я набрал следующие команды:

java -version  

//это дало мне Java 8

После этого я набрал:

javac -version

//это дало мне Java 12

Другими словами, моя программа компилируется с Java 12, и я пытаюсь работать с Java 8.

Чтобы решить эту проблему, я удалил Java 8 JRE со своего компьютера.

Вернулся в командную строку, чтобы проверить, возвращают ли "java -version" и "javac -version" один и тот же номер версии, и да, он возвращает Java 12.

Попробовал перекомпилировать мою программу еще раз и запустить ее. Это сработало !!

Это сработало! Эврика !!

Ответ 12

Проверьте консоль. В нем говорится об ошибке java.lang.SecurityException. Измените свое имя пакета. Я изменил имя пакета с "java.assessment" на "assesment", и это сработало для меня. Если кто-то знает основную причину, сообщите мне, пожалуйста.

Ответ 13

ВОЗМОЖНОЕ РЕШЕНИЕ Если NONE этих решений сработало для вас, попробуйте это... Я, наконец, получил свою работу, удалив две папки ".metadata" и ".recommenders" в папке рабочей области. Вы можете найти путь к папке рабочей области, щелкнув "Файл" > "Переключить рабочее пространство" > "Другое" на панели инструментов приложения Eclipse.

Теперь я полный нуб, плачущий мой путь через степень SE в Университете штата Сан-Хосе. Поэтому я просто делюсь тем, что сработало для меня, не зная о том, почему именно. Я не знаю, какой вред или головные боли, или даже если обе вышеупомянутые папки необходимо удалить. Но, в конце концов, это сработало для меня, и кажется, что приложение просто обновляет новые версии этих папок в любом случае.

Ответ 14

Я столкнулся с аналогичной проблемой и получил решение в названии пакета. Я сохранил имя пакета как java.basics. В консоли я получил намек на это, так как ясно сказано, что имя запрещенного пакета. Поэтому я изменил имя пакета и работал.

Ответ 15

отредактируйте ".classpath" и включите тег ниже

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

это может решить вашу проблему.

Ответ 16

Надеюсь, это поможет кому-то другому. Я страдал этим, работая над проектом несколько лет назад, а затем работа над новым проектом начиналась неудачно несколько дней назад. Я нашел этот пост и пытался вспомнить, что я изменил в своем проекте, а затем я вспомнил, что я изменил свой maven pom и удалил запись для maven-jar-plugin. Когда вы создаете банку, цель которой должна быть исполняемой, вам нужно включить ее, чтобы некоторые записи записывались в манифест. Я открыл старый проект, скопировал эту запись (с некоторыми изменениями для названия проекта), и она сработала.

Ответ 17

Я думаю, это происходит потому, что имя вашего класса совпадает с именем другого класса в JDK. Помогите затмению определить, какой из них вы пытаетесь запустить, выбрав пакет, в котором находится ваш класс. Перейдите в выполнить конфигурацию, выберите проект и основной класс.

Когда вы нажмете кнопку поиска, чтобы выбрать основной класс, вы найдете параметры с таким же именем , но с другим пакетом, выберите свой класс.

Ответ 18

Моя проблема возникла из-за попытки отключить природу Maven в моем проекте, а затем удалить файл pom.xml. Это плохо, очень плохо, не делай этого. Если вы это сделаете, измените его обратно на проект Maven и, надеюсь, вы можете восстановить старый файл pom.xml или создать новый. Как только я это сделал, это снова заработало.

РЕДАКТИРОВАТЬ: я недавно столкнулся с этой проблемой снова, и на этот раз это было, потому что у меня были дубликаты библиотек в моем classpath. Тот, который добавил Maven (который начинался с /M2_REPO/...., а затем тот, который я добавил (чего я не должен был делать). Несмотря на то, что Eclipse сообщал, что не может найти класс, реальная проблема заключалась в том, что у меня было дал ему две библиотеки с одним и тем же классом, и он не знал, какую из них использовать. Как только я удалил вторую ссылку, это сработало.

Ответ 19

В моей консоли не было никакой информации, поэтому я отправил поиск дополнительных решений и нашел их - уникальными для решений, представленных здесь. Я столкнулся с этим, когда Eclipse Oxygen пытался запустить старую сборку Ant для проекта.

Причина 1 Я настроил Eclipse для использования внешней установки Ant, которая была версии 1.10.2, в которой, по-видимому, были классы, скомпилированные с JDK 9. В Eclipse я получил ошибку JNI, описанную выше (запуск сборки Ant из командной строки дал мне известная ошибка "неподдерживаемая версия major.minor" - Java, которую я использовал в системе, был JDK 8).

Решением было откат до встроенной версии Ant Eclipse 1.10.1. Я проверил это как правильное решение, загрузив Ant 1.10.1 отдельно и перенастроив Eclipse для внешнего использования нового 1.10.1, и он все еще работал.

Причина 2 Это также может произойти, если у вас неправильно настроены параметры среды выполнения Ant в настройках Eclipse. В зависимости от версии Ant, с которой вы работаете, вам необходимо добавить tools.jar из соответствующего JDK в путь к классу, используемый для среды выполнения Ant (Home Entries). Более конкретно, без надлежащей конфигурации Eclipse будет жаловаться при запуске цели Ant, что версия JRE меньше определенной требуемой версии.

По сути, "правильная конфигурация" означает выравнивание каждого из элементов конфигурации в Eclipse для запуска Ant так, чтобы они все работали вместе. Это включает в себя запись Ant Runtime Home (должна указывать на версию Ant, совместимую с выбранным вами JDK - вы не можете запустить Ant с JDK 8, когда он был скомпилирован с JDK 9); указание tools.jar который принадлежит JDK, с которым вы хотите запустить Ant, в настройках Ant Runtime; и, наконец, настройку среды JRE вашего сценария сборки на JDK, с которым вы хотите запустить Ant в конфигурации внешних инструментов. Все 3 из этих настроек должны быть согласованы, чтобы избежать ошибки, описанной выше. Вам также нужно будет рассмотреть атрибуты, используемые в вашем теге javac чтобы убедиться, что используемый вами JDK способен выполнять в соответствии с вашими указаниями (т.е. JDK 7 не может компилировать код с использованием исходной и целевой версии 8).

Более того, если вы действительно пытаетесь запустить скрипт сборки Ant для компиляции кода в более старый JDK (например, менее 8 для Oxygen), эта статья помогла получить доступ к запуску Ant против более старого JDK. Существуют замены плагинов Ant для нескольких версий Eclipse, инструкции краткие, и важно получить правильную версию плагина для вашего конкретного Eclipse.

Или, проще говоря, вы можете использовать это очень хорошее решение для своей устаревшей компиляции, которая не требует замены вашего плагина Eclipse, но вместо этого изменяет тег javac в вашем скрипте сборки (при использовании последней версии JDK).

Ответ 20

Я столкнулся с той же ошибкой, когда я добавил в свой проект следующую зависимость maven:

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

Ошибка возникла только когда я запустил файл jar тени, созданный maven-shade-plugin. Я смог преодолеть ошибку, используя jar, созданный maven-assembly-plugin.

Ответ 21

У меня не все работает, но как только я удаляю ".metadata" и ".recommenders" из рабочей области, а также удаляю папки "bin" и "setting", а затем после повторного импорта того же проекта, это работает для меня.

Ответ 22

Столкнулся с такой же проблемой в Netbeans 8.0.2. Clean and Build Project решил эту проблему.

Ответ 23

Вы можете попробовать: щелкните правой кнопкой мыши на проекте, а затем нажмите кнопку очистки. После этого запустите проект.

Меня устраивает.

Ответ 24

Программы, написанные для одной версии jdk, не будут поддерживать платформу JNI другой версии jdk. Если в этом случае мы используем jdk10 и jdk8, eclipse настроен для jdk10 и код написан на jdk10. Теперь я не хочу использовать jdk10 и начал использовать jdk8 в качестве jvm и пытался запустить код, который написан на jdk10, поэтому затмение произойдет из-за ошибки JNI. Итак, чтобы выйти из этой ошибки, пожалуйста, добавьте текущий путь JVM в файл eclipse.ini, после этого скопируйте записанный код в буфер обмена и удалите проект в eclipse, создайте новый проект, проверьте скопированный код и запустите.

Ответ 25

Если проблема возникает во время установки ANT, проверьте ваш ANT HOME: он должен указывать на ту же папку, в которой вы работаете.

Это случилось со мной, когда я переустанавливал новую версию eclipse и удалял previouis eclipse fodler, сохраняя предыдущий файл ant: ant просто не нашел никакой библиотеки java.

Это в данном случае причина не плохая версия JDK.

Ответ 26

У меня та же проблема. Может ли кто-нибудь предложить решение для этого..?

enter image description here

Ответ 27

Я столкнулся с той же проблемой из-за того, что упакованное имя было "Java", после переименования имени пакета не выдается ошибка.

Ответ 28

У меня возникла та же проблема, однако в моем случае это было связано с настройками конфигурации в IntelliJ IDEA.

Несмотря на то, что SDK проекта (Файл → Структура проекта) был установлен на Java 11, JRE в Конфигурации запуска/отладки (Выполнить → Редактировать конфигурации) был установлен на Java 8. После изменения этого на Java 11 он работал как очарование.

Ответ 29

В моем случае Eclipse давал мне эту ошибку, но я получал исключение classnotfoundexception для javax.servlet.http.HttpServlet в журналах.

В моем случае я пытался запустить приложение весенней загрузки с exclude module: 'spring-boot-starter-tomcat' в моем build.gradle (так как я развертываю на Wildfly).

Решение было прокомментировать это исключить. Ошибка JNI затмения очень вводит в заблуждение, и я бы предложил исправить это.

Ответ 30

была такая же проблема. Я импортировал более новую версию библиотеки json (удалил старую, но не удалил ее из пути сборки). Решил это, удалив ссылку на старый из пути сборки