NoClassDefFoundError-

时间:2019-01-14 17:30:35

标签: java oop object noclassdeffounderror packaging

我不熟悉包装,也不熟悉编程,因此遇到了一个问题,即VM无法找到由我的一个类对象创建的内部类。

此项目的快速背景知识,是我正在为我的孩子们整理的一个存钱罐应用程序。该程序在命令行中可以正常运行,但是一旦打包,就会出现此错误。我想打包它,以便孩子们可以根据需要在桌面上打开它。我使用以下命令行将其打包:

  

java cmf Bank.mf BankMain.class Login.class BankGUI.class BankGUI $ 1.class AccountGUI.class AccountGUI $ 1.class AccountGUI $ 1.class Account.class

出现的问题在BankGUI.class内部,我有一个Action Listener函数,它不是类对象的一部分,但是由类对象调用。我尝试将其设为类方法,但这没什么区别。

此代码的目的是打开登录屏幕,子代可以键入其用户名和密码,如果信息不正确,则系统不执行任何操作,或者根据凭据打开AccountGUI对象并关闭原始的BankGUI对象。我想到了使“响应”成为静态方法可能会解决此问题的想法,但经过深思熟虑(和试用),它与BankGUI正在打开内部类这一事实无关。我认为问题与打开其余对象时关闭原始BankGUI对象有关,但我看不到位置或方式,也没有在线参考有帮助。任何见识将不胜感激!

    ...boolean login = false;

    Login log = new Login();

    Font f = new Font("Helvetica", Font.BOLD, 30);
    Font f2 = new Font("Helvetica", Font.BOLD, 60);

    JPanel mainPanel = new JPanel();
    mainPanel.setBackground(Color.BLACK);
    add(mainPanel);

    JPanel panel = new JPanel(new GridLayout(6, 1));
    mainPanel.add(panel, BorderLayout.CENTER);
    panel.setBackground(Color.BLACK);

    JPanel blank = new JPanel();
    blank.setBackground(Color.BLACK);
    panel.add(blank);

    JPanel blank1 = new JPanel();
    blank1.setBackground(Color.BLACK);
    panel.add(blank1);


    JPanel welcomePanel = new JPanel();
    welcomePanel.setBackground(Color.BLACK);
    panel.add(welcomePanel);

    JLabel welcomeLabel = new JLabel("Please log into your account");
    welcomeLabel.setFont(f);
    welcomeLabel.setBackground(Color.BLACK);
    welcomeLabel.setForeground(Color.WHITE);
    welcomePanel.add(welcomeLabel);


    JPanel user = new JPanel();
    user.setLayout(new BorderLayout());
    user.setBackground(Color.BLACK);
    panel.add(user);

    JLabel name = new JLabel("USER NAME:     ");
    name.setFont(f);
    name.setBackground(Color.BLACK);
    name.setForeground(Color.WHITE);
    name.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));

    JTextField nInput = new JTextField();
    nInput.setFont(f2);
    nInput.setBackground(Color.BLACK);
    nInput.setForeground(Color.WHITE);


    JPanel pass = new JPanel();
    pass.setLayout(new BorderLayout());
    pass.setBackground(Color.BLACK);
    panel.add(pass);


    JLabel password = new JLabel("PASSWORD:     ");
    password.setFont(f);
    password.setBackground(Color.BLACK);
    password.setForeground(Color.WHITE);
    password.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));


    JPasswordField pw = new JPasswordField(10);
    pw.setFont(f2);
    pw.setBackground(Color.BLACK);
    pw.setForeground(Color.WHITE);

    panel.add(blank);

    JButton submit = new JButton("SUBMIT");
    submit.setFont(f);
    submit.setBackground(Color.GRAY);
    submit.setForeground(Color.WHITE);

    user.add(name, BorderLayout.WEST);
    user.add(nInput, BorderLayout.CENTER);
    pass.add(password, BorderLayout.WEST);
    pass.add(pw, BorderLayout.CENTER);
    panel.add(submit);


    respond(submit, nInput, pw, log, login);




    }


    public void respond(JButton b, JTextField tf, JPasswordField pf, Login log, boolean login) {
     b.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {
       String s = e.getActionCommand();

       switch (s) {
        case ("SUBMIT"):
         log.setUser(tf.getText());
         char[] password = pf.getPassword();
         String pw = String.valueOf(password);
         log.setPassword(pw);
         if (log.getVerification()) {

          AccountGUI open = new AccountGUI(tf.getText(), pw);
          open.setVisible(true);

          dispose();
         }
         break;
       }



      }
     });
    }

    }

0 个答案:

没有答案