繁体   English   中英

无法在JAR执行时找到或加载主类

[英]Could not find or load main Class on JAR executing

我完成了我的项目(在NetBeans )并导出了Jar文件(我在导出Jar之前正确地在项目属性中设置了我的主类):

在此输入图像描述

现在,这是我的JAR

在此输入图像描述

运行Jar时显示此错误(在命令行页面中):

Could not find or load main Class on JAR executing

这是我的MANIFEST.MF信息:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.1
Created-By: 1.7.0_11-b21 (Oracle Corporation)
Class-Path: lib/mysql-connector-java-5.1.18-bin.jar
X-COMMENT: Main-Class will be added automatically by build
Main-Class: Project.LoginFrame

我的所有课程都在这里:

在此输入图像描述

我也在命令行中尝试:

在此输入图像描述

我的项目此时执行,但是没有显示所有图片(在文件夹中),并且还发生了sql Exception

在此输入图像描述

更新:

package Project;

import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.plaf.nimbus.NimbusLookAndFeel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.sql.*;

public class LoginFrame extends javax.swing.JFrame implements ActionListener {

String dbUrl = "jdbc:mysql://localhost/Library";
private char[] Password;
private JButton ClearBtn,ExitBtn,LoginBtn;
private JLabel ErrorLbl;
private JComboBox comboBox;
private JLabel lbl1;
private JLabel lbl2;
private JLabel lbl3;
private String[] enterUserInf = new String[4];
private JPasswordField passwordField;
private JTextField usernameTF;

public LoginFrame() {
    initComponents();
    this.getRootPane().setDefaultButton(LoginBtn);
    comboBox.addActionListener(this);
    setVisible(true);
}

public static void main(String args[]) throws IOException {
    new LoginFrame();
}

private void initComponents() {
    //...
}

private void LoginButtonActionPerformed(java.awt.event.ActionEvent evt) {

    try {
        if (comboBox.getSelectedIndex() == 0) {
            ErrorLbl.setText("Select A Model...");
            ErrorLbl.setVisible(true);
            return;
        }

        Password = passwordField.getPassword();

        if (!passwordControl()) {
            return;
        }

        if (comboBox.getSelectedIndex() == 1) {
            if (userEnterCondition(Password)) {
                this.setVisible(false);
                new BookPage_User(enterUserInf, enterUserInf[0]);
            } else {
                ErrorLbl.setText("Incorrect Password!");
            }
        }

        if (comboBox.getSelectedIndex() == 2) {
            if (adminEnterCondition(Password)) {
                this.setVisible(false);
                new MainFrame().setVisible(true);
            } else {
                ErrorLbl.setText("Incorrect Password!");
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
        ErrorLbl.setText("Enter Correct Input");
    }

}

private void ExitButtonActionPerformed(java.awt.event.ActionEvent evt) {
    System.exit(0);
}

private void ClearButtonActionPerformed(java.awt.event.ActionEvent evt) {
    passwordField.setText("");
}

public boolean passwordControl() {
    Password = passwordField.getPassword();
    if (String.valueOf(Password).trim().isEmpty()) {
        ErrorLbl.setText("Empty Password!");
        ErrorLbl.setVisible(true);
        return false;
    }
    return true;
}

public boolean adminEnterCondition(char[] pass) {
    Connection con;
    PreparedStatement preparedStatement;
    ResultSet resultSet;
    String query = "Select * From adminLogin";
    String password = null;
    try {
        con = DriverManager.getConnection(...);
        preparedStatement = con.prepareStatement(query);
        resultSet = preparedStatement.executeQuery();
        while (resultSet.next()) {
            password = resultSet.getString("ID");  // Get column value by name column name
            if (password.equalsIgnoreCase(String.valueOf(pass))) {
                return true;
            }
        }

    } catch (SQLException sqle) {
        sqle.printStackTrace();
        return false;
    }
    return false;
}

public boolean userEnterCondition(char[] pass) {
    Connection con;
    PreparedStatement preparedStatement;
    ResultSet resultSet;
    String query = "Select * from users";
    String password = null;
    try {
        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection(...);
        preparedStatement = con.prepareStatement(query);
        resultSet = preparedStatement.executeQuery();
        while (resultSet.next()) {
            password = resultSet.getString("User_ID");
        }

    } catch (SQLException sqle) {
        return false;
    } catch (ClassNotFoundException cnfe) {
    }
    return false;
}

@Override
public void actionPerformed(ActionEvent e) {
    if (e.getSource() == comboBox) {
        if (comboBox.getSelectedIndex() == 1) {
            usernameTF.setText("User");
            usernameTF.setEditable(false);
            passwordField.requestFocusInWindow();
            ErrorLbl.setVisible(false);
        } else if (comboBox.getSelectedIndex() == 2) {
            passwordField.requestFocusInWindow();
        }
    }
}
}

使用WinRAR或类似程序打开您的jar文件。 然后转到META-INF文件夹并打开MANIFEST.MF。 确保属性“Main-Class:your.class.path”是正确的。

所以,这里出现了问题的错误---你为什么提到con = DriverManager.getConnection(...); 在你的代码?

因此,您的代码正在捕获SQL Exception 这是错误的来源: -

public boolean userEnterCondition(char[] pass) {
Connection con;
PreparedStatement preparedStatement;
ResultSet resultSet;
String query = "Select * from users";
String password = null;
try {
    Class.forName("com.mysql.jdbc.Driver");
    con = DriverManager.getConnection(...);     //error in this line

................. and so on.

替换为

con =DriverManager.getConnection("jdbc:mysql://localhost/Library?" +
                               "user=yourusername&password=yourpassword");

我希望这会有所帮助。如果仍然出现错误,请在下方发表评论!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM