【问题标题】:Run java class by command line通过命令行运行java类
【发布时间】:2014-07-20 19:34:49
【问题描述】:

我尝试在这里通过命令行运行我的课程 (LoginFrame.java):

(我的JavaJavac 命令在命令行中工作)

首先我使用javac命令编译LoginFrame类:(这个类有main方法)

并使用Java 运行课程:

我在evrironment variable path中设置了jdk 1.7的bin文件夹

(我使用的是 Windows 7)

怎么了?

LoginFrame class:

package Project;

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();
    }
}
}
}

【问题讨论】:

  • 一方面你的程序没有被编译,因为它包含错误。
  • 你在编译阶段有编译错误,所以不会生成.class文件。尝试先修复错误,然后使用javac 再次编译,然后使用java 运行编译后的类。
  • @SayemAhmed 为什么在我尝试使用IDE 时会运行LoginFrame 类?
  • @SayemAhmed 我的NewBook_UserMainFrameSetMyImage 类都存在于目录中,但是为什么会有错误?
  • 好吧,我建议修复导入并提供三个缺失的类。作为回应,您关闭了命令行并重新打开它。那只是没有帮助。尝试添加缺少的导入。您还缺少三个课程。您可以尝试整天运行它,但在修复编译错误之前它不会运行。

标签: java


【解决方案1】:

您必须将目录更改为 src 目录,然后调用 `javac -cp ./Project.LoginFrame.java

【讨论】:

  • 抱歉,如何更改我的目录?
  • 投反对票,因为您的回答具有误导性。在他修复编译错误之前,这将无济于事。
  • @DonBranson 我的代码是否可能在我的IDE 中没有任何编译错误,但在命令行编译中存在一些编译错误?
  • 我不确定为什么您的 IDE 不会捕获编译错误。您显然缺少 Swing 类的导入。
  • 这个答案真的对你有帮助吗,或者你只是为了它而接受它@user3808021?
猜你喜欢
  • 1970-01-01
  • 2021-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-19
  • 2015-06-23
  • 2012-02-07
相关资源
最近更新 更多