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

我完成了我的项目(在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"); 

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