web-dev-qa-db-ja.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());

}

}

上記のコードは友人のラップトップで完全に機能し、ラップトップでこのエラーをスローします。 Java 7を使用してEclipse Junoでコードを実行しています。また、ラップトップで多くのJavaプログラムをテストして実行しましたが、すべて正常に動作します。これは、このようなエラーを発生させる唯一のプログラムです。これは私の最後の年のプロジェクトであり、ラップトップで作業するために必要です。

32
Jash Parekh

短い答え:メインメソッドを含むクラスを右クリックします。 「実行」をクリックします。 「Javaアプリケーション」をクリックします。キーボードショートカットは、Shift + Alt + X Jです(ShiftとAltを押しながらXを押し、次にShiftとAltを放してJを押します)。

長答:正直に言うと、この問題が発生する理由は100%わかりません。別のjdkを使用していることが原因の可能性があります。私は同じエラーに直面しました。解決策は想像したよりも簡単でした。 Ctrl + F11を使用してコードを実行することに慣れていました。しかし、Javaアプリケーションとして実行したとき(「短い答え」で説明した方法)、問題は解決しました。他の人の問題も解決するかどうかはわかりませんが、試してみる価値はあります。 :)

26
Navid Vafaei

エラー: JNIエラーが発生しました。インストールを確認して、Eclipseで再試行してください

解決: パッケージ名がJavaのパッケージ名と衝突する可能性があるため、パッケージ名を確認してください。問題を解決するには、単にパッケージ名を変更してください。 :)

9
user8472395

パッケージ名の先頭に「Java」を使用する場合、同様の問題がありました。 Java.jem.pc

コンソール出力を確認してください、私は受け取っていました:スレッド「メイン」の例外Java.lang.SecurityException:禁止されたパッケージ名:Java.jem.pc

8
CoDeSigns

次の方法でコマンドラインからjarを実行します:

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

問題をより明確にする情報を得ました。

main/Mainは、Java Runtimeの最新バージョンによってコンパイルされました

enter image description here

この場合、jarはjreがサポートするよりも新しいバージョンでコンパイルされています。

4
c0der

私の場合、問題の原因はJDKバージョンです。これを解決するには、pomファイルに移動して<jdk.version>1.7</jdk.version>.を確認することをお勧めします

その後、Java -versionと入力して、cmd(windows)または端末(OSXまたはLINUX)でJavaバージョンを確認します。

Terminal\commandプロンプトに表示されるバージョンと、pomファイルにあるバージョンを比較します。それらが同じであることを確認してください。その後、プロジェクトを再度実行します。

4
DvixExtract

私も同じ問題に直面しました。言っているコンソールを見て

Java.lang.SecurityExceptionの問題。

解決策:

プロジェクトのパッケージ名を確認してください。

問題が解決されることを願っています。そうでない場合は、根本原因を追跡するためにコンソールトレースを印刷してください。

3
Devendra

JDKバージョンが異なる場合に発生する可能性があります。

mavenでこれを試してください:

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

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

これらのコード行をMavenプロジェクトのpom.xmlファイルに追加すると、同様の問題が解決されることがわかりました。

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

最初にコンソールを確認して実際のエラーメッセージを確認し、そのエラーの回答を探して先に進んでください。

コンソールには、クラスjcommanderのエラーNoClassDefFoundが表示されます。あなたのエラーはおそらく私のものとは異なるでしょう。エラーの原因は、クラスjcommanderがM2リポジトリにないため、pom.xmlにその依存関係を追加するだけです。すべてのクラス依存関係がすべて宣言され、現在の構成とプロジェクトビルドに追加されているかどうかを確認できます。

NoClassDefFoundError

2
Miguel Ormita

こんにちは、Maven依存関係のあるIntelliJのプロジェクトで同様の問題に直面しました。

依存関係の範囲を提供からコンパイルに変更して解決しました。

IntelliJ

ファイル>プロジェクト構造>モジュール>依存関係>スコープ(コンパイルを提供)

2
Salvador Vigo

POSSIBLE SOLUTIONこれらの解決策のどれもうまくいかなかった場合、これを試してみてください...ワークスペースフォルダー内のフォルダー「.metadata」および「.recommenders」。 Eclipseアプリケーションのツールバーで[ファイル]> [ワークスペースの切り替え]> [その他]をクリックすると、ワークスペースフォルダーのパスを見つけることができます。

今、私はサンノゼ州立大学でSE学位を取得するために泣いている完全な初心者です。だから私は、なぜ正確にその理由についての知識がなくても、私のために働いたものを共有しています。私は、どのような害や頭痛が起こるのか、あるいは前述のフォルダーを両方とも削除する必要があるのか​​どうかも知りません。しかし、結局、それは私のために働きました、そして、アプリケーションはとにかくそれらのフォルダーの新しいバージョンを単に再作成するようです。

1
Muhammad Soroya

コンソールを確認してください。 Java.lang.SecurityExceptionの問題があります。 「パッケージ名」を変更します。パッケージ名を「Java.assessment」から「assesment」に変更しましたが、うまくいきました。誰かが根本原因を知っている場合、私に知らせてください。

1
Keshav Bisarwal

あなたが試すことができます:プロジェクトを右クリックしてから、クリーンをクリックします。この後、プロジェクトを実行します。

わたしにはできる。

0
lupin

私はしばらくの間この問題を抱えていましたが、今ではそれを理解しました。

Java JDK 12には、Java 12 JDKのbinフォルダー内にJREと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を返しています。

プログラムを再コンパイルして、実行してみました。動いた!!

それは働いた!ユーリカ!!

0
Professor

すべては私にとってはうまくいきませんが、ワークスペースの「.metadata」と「.recommenders」を削除し、「bin」と「setting」フォルダも削除してから、同じプロジェクトを再インポートした後、それは私のために働きました。

0

これが他の人の助けになることを願っています。数年前にプロジェクトに取り組んでいたときにこれに苦しんでいましたが、数日前に新しいプロジェクトの仕事が失敗し始めました。この投稿を見つけて、プロジェクトで変更した内容を思い出そうとしていたのですが、maven pomを変更し、maven-jar-pluginのエントリを削除したことを思い出しました。実行可能にすることを目的とするjarをビルドする場合、特定のエントリがマニフェストに書き込まれるように、これを含める必要があります。古いプロジェクトを開いて、そのエントリを(プロジェクト名にいくつかの変更を加えて)コピーし、機能しました。

0
Eric Forte

ANTの起動中に問題が発生した場合は、ANT HOMEを確認してください。実行しているのと同じEclipseフォルダーを指している必要があります。

新しいバージョンのEclipseを再インストールし、以前のantホームを保持したまま前の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"/>

これで問題を解決できます。

同じ問題があった。 jsonライブラリの新しいバージョンをインポートしました(古いバージョンを削除しましたが、ビルドパスからは削除しませんでした)。ビルドパスから古いものへの参照を削除して解決しました

0
Chris

これは、クラスの名前がJDKの別のクラスの名前と同じであるために起こると思います。クラスが含まれているパッケージを選択して、Eclipseが実行しようとしているものを判別できるようにします。 実行構成に移動してプロジェクトを選択し、メインクラスに移動します。

検索ボタンを押してメインクラスを選択すると、同じ名前のオプションが見つかりますただし、異なるパッケージ、クラスを選択します。

0

私の場合、Eclipseからこのエラーが出されていましたが、ログのjavax.servlet.http.HttpServletでclassnotfoundexceptionが発生していました。

私の場合、build.gradleでexclude module: 'spring-boot-starter-Tomcat'を使用してSpring Bootアプリを起動しようとしました(Wildflyにデプロイしているため)。

解決策は、この除外をコメントアウトすることでした。 Eclipse JNIエラーは非常に誤解を招きやすいため、修正することをお勧めします。

0
java-addict301

「コンパイラー準拠レベル」を変更して解決しました。 Eclipseの場合:

ウィンドウ->設定-> Java->コンパイラ

0
juancarlosun

私の問題は、プロジェクトからMavenの性質を無効にしてからpom.xmlファイルを削除しようとしたことから生じました。これは悪い、非常に悪い、これをしないでください。その場合は、Mavenプロジェクトに戻します。古いpom.xmlファイルを復元するか、新しいファイルを作成できることを願っています。私がそれをやるとすぐに、それは再び働きました。

編集:最近、この問題に再び出くわしました。今回は、クラスパスに重複したライブラリがあったためです。 Mavenが追加したもの(/ M2_REPO/....で始まり、その後追加したもの(これはすべきではありません)。Eclipseがクラスを見つけることができないと報告していましたが、実際の問題は同じクラスの2つのライブラリがあり、どちらを使用するかわからなかったため、2番目の参照を削除すると機能しました。

0
Chris C

私は同様の問題に直面し、パッケージ名で解決策を得ました。パッケージ名はJava.basicsのままにしました。コンソールでは、禁止パッケージ名が明確に示されているので、そのためのヒントを得ました。だから私はパッケージ名を変更し、それは働いた。

0
H S Rathore

プロジェクトに次のMaven依存関係を追加すると、同じエラーが発生します。

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

maven-shade-pluginで作成されたシェードjarファイルを実行したときにのみエラーが発生しました。 maven-Assembly-pluginによって生成されたjarを使用して、エラーを克服することができました。

0
Ioannis Tsiokos

私は同じ問題を経験しましたが、私の場合はIntelliJ IDEAの構成設定が原因でした。

プロジェクトSDK(ファイル->プロジェクト構造)はJava 11に設定されていましたが、実行/デバッグ構成(実行->構成の編集)のJREはJava 8に設定されました。それをJava 11に変更した後、それは魅力のように機能しました。

0
dbakiu

Jdkの1つのバージョンで作成されたプログラムは、jdkの別のバージョンのJNIプラットフォームをサポートしません。 jdk10とjdk8を使用している場合、jdk10用に設定されたEclipseとjdk10で記述されたコード。今、私はjdk10を使用したくなく、jvmとしてjdk8を使用し始め、jdk10で書かれたコードを実行しようとしたので、EclipseはJNIのエラーを通過します。したがって、このエラーから抜け出すには、Eclipse.iniファイルに現在のJVMパスを追加してください。この後、書き込まれたコードをクリップボードにコピーし、Eclipseでプロジェクトを削除し、新しいプロジェクトを作成し、コピーしたコードをチェックインして実行します。

0
Kuber Pujar

コンソールに情報がなかったため、追加のソリューションを検索して、ここで紹介したソリューションに固有のソリューションを見つけました。プロジェクトで古いAntビルドを実行しようとすると、Eclipse Oxygenでこれに遭遇しました。

原因1JDK 9でコンパイルされたクラスが含まれていると思われるバージョン1.10.2の外部Antインストールを使用するようにEclipseを構成しました。 Eclipse上記のJNIエラーが発生しました(コマンドラインでAntビルドを実行すると、「unsupported major.minor version」エラーが発生しました-システムで使用していたJavaはJDK 8でした)。

解決策は、Antの組み込みEclipseバージョン1.10.1にロールバックすることでした。 Ant 1.10.1を個別にダウンロードし、新しい1.10.1を外部で使用するようにEclipseを再構成することで、これが正しいソリューションであることを確認しましたが、引き続き機能しました。

原因2これは、Eclipseの設定でAntランタイム設定が正しく構成されていない場合にも発生する可能性があります。実行しているAntのバージョンに応じて、適切なJDKのtools.jarをAntランタイム(ホームエントリ)に使用されるクラスパスに追加する必要があります。より具体的には、適切な構成がないと、Eclipseは、Antターゲットを起動するときに、JREバージョンが特定の必要なバージョンよりも小さいと文句を言います。

基本的に、「適切な構成」とは、Antを実行するためにEclipseの各構成アイテムを調整して、それらがすべて連携して動作することを意味します。これにはAnt Runtime Homeエントリが含まれます(選択したJDKと互換性のあるAntバージョンを指している必要があります-JDKに対してコンパイルされた場合、JDK 8でAntを実行することはできません9); Antランタイム設定でAntを実行するJDKに属するtools.jarを指定します。最後に、ビルドスクリプトのJRE環境を、外部ツール設定でAntを実行するJDKに設定します。これらの3つの設定はすべて、上記のエラーを回避するために同意する必要があります。また、javacタグで使用される属性を考慮して、使用しているJDKが指示どおりに実行できることを確認する必要があります(つまり、JDK 7はソースおよびターゲットバージョン8を使用してコードをコンパイルできません) )。

さらにAntビルドスクリプトを実行してコードを古いJDK(たとえば、Oxygenの場合は8未満)にコンパイルしようとしている場合は、この記事 古いJDKに対してAntを実行する にアクセスできるようにしました。 EclipseのいくつかのバージョンのAntプラグインの代替品があります。手順は簡単で、特定のEclipseの正しいプラグインバージョンを取得することが重要です。

またはより単純にこの非常に優れたソリューションを使用できます レガシーコンパイルを行うため これはEclipseプラグインを置き換える必要はなく、代わりにjavacタグをビルドスクリプトに(最新のJDKを使用中)。

0
dan

パッケージ名の変更後にエラーがスローされなかったため、パッケージ名が「Java」であったため、同じ問題に直面しました。

0
kiran