NoClassDefFoundError - - PullRequest
       11

NoClassDefFoundError -

0 голосов
/ 14 января 2019

Я новичок в упаковке и довольно новичок в программировании, и я столкнулся с проблемой, когда виртуальная машина не может найти внутренний класс, созданный одним из моих объектов класса.

Краткая справка об этом проекте, это приложение для копилки, которое я создаю для своих детей. Программа отлично работает в командной строке, но как только я ее упакую, у меня появляется эта ошибка. Я хотел бы упаковать его, чтобы дети могли открывать его по мере необходимости на рабочем столе. Я упаковал его, используя следующую командную строку:

java cmf Bank.mf BankMain.class Login.class BankGUI.class BankGUI $ 1.class AccountGUI.class AccountGUI $ 1.class AccountGUI $ 1.класс Account.class

Проблема, которая возникает внутри BankGUI.class. У меня есть функция прослушивателя действий, которая не является частью объекта класса, но вызывается объектом класса. Я пытался сделать это методом класса, но это не имело значения.

Цель этого кода - открыть экран входа в систему, ребенок может ввести свое имя пользователя и пароль, система либо ничего не делает, если информация неверна, либо открывает объект 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;
       }



      }
     });
    }

    }
...