it-roy-ru.com

Произошла ошибка 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 на своем ноутбуке, и все работает хорошо. Это единственная программа, которая выдает такую ​​ошибку. Это мой последний проект года, и мне нужно, чтобы он работал на моем ноутбуке, я буду благодарен всем, кто помогает

22
Jash Parekh

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

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

21
Navid Vafaei

У меня были похожие проблемы при использовании «Java» в начале имени пакета, например Java.jem.pc

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

6
CoDeSigns

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

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

4
user8472395

Я также столкнулся с той же проблемой. Глядя на консоль, которая говорит

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

Решение:

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

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

3
user3852778

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

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

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

3
DvixExtract

Это может произойти, если версия 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>
2
erank

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

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

1
Muhammad Soroya

Я обнаружил, что добавление этих строк кода в файл 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>
1
Jasmohan

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

1
Keshav Bisarwal

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

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

NoClassDefFoundError

1
Miguel Ormita

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

C:\folder\where\jar\stored>Java -jar JarName.jar Я получил информацию, которая прояснила проблему: 

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

 enter image description here

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

1
c0der

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

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

0
lupin

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

0
Shyamjeet Sharma

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

0
Eric Forte

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

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

IntelliJ :

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

0
Salvador Vigo

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

Это случилось со мной, когда я переустанавливал новую версию Eclipse и удалял прежнюю версию Eclipse, сохраняя прежний муравей дома: ant просто не нашел никакой библиотеки Java.

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

0
ntucci

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

0
Michu93

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

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

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

0
Bheemashankar Pattar

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

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

0
Mohamed Abdelmagid

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

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

0
Chris C

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

0
H S Rathore

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

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

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

0
Ioannis Tsiokos

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

0
Kuber Pujar

В моей консоли не было никакой информации, поэтому я отправил поиск дополнительных решений и нашел их - уникальными для решений, представленных здесь. Я столкнулся с этим, когда 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 ).

0
dan

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

0
kiran