Нефритовый агент ошибки a1 умер без должного завершения. состояние ошибки 2

я новичок в jade, я хочу настроить агента аукциона, который дает время и количество предметов, а затем ... но я получаю эту ошибку

  • Нефритовый агент ошибки a1 умер без должного завершения. состояние ошибки 2 мои коды:

    int timeout=Integer.parseInt(JOptionPane.showInputDialog("Какова продолжительность аукциона в секундах?"));

          number=Integer.parseInt(JOptionPane.showInputDialog("What's the number of items?"));
    
          //service registration
          DFAgentDescription dfd = new DFAgentDescription();
          dfd.setName(getAID());
          ServiceDescription sd = new ServiceDescription();
          sd.setType("Uniform-Price-Auction");
          sd.setName("Uniform-Price-Auction");
          dfd.addServices(sd);
          try {
              DFService.register(this, dfd);
          }
          catch (FIPAException fe) {
              fe.printStackTrace();
          }
    
          // Add the behaviour serving queries from buyer agents
          addBehaviour(new getBids());
    
          // Add the behaviour serving purchase orders from buyer agents
          addBehaviour(new DetermineWinner(this,timeout*1000));
    
    
          gui=new ActioneerGUI();
          gui.setVisible(true);
          gui.setlabel1("We want to sell "+number+" items");
          gui.setlabel2("Auction is running...");
    

person Somaie Abdolzadeh    schedule 25.05.2018    source источник
comment
Является ли этот код кодом поведения? Насколько я знаю, эта ошибка возникает, когда возникает ошибка во время выполнения поведения. Попробуйте обернуть весь свой код в блок try-catch, чтобы найти ошибку или просмотреть консоль. Есть ли трассировка стека?   -  person nikelyn    schedule 25.05.2018


Ответы (1)


Учтите, что агент JADE в конце концов является потоком Java, и всякий раз, когда возникает ошибка, это приводит к тому, что агент или поток будут завершены (обычно это происходит в классе AgentWrapper, если я прав).

Также имейте в виду, что при вызове JOptionPane (который является Swing) вы влияете на два потока: поток агентов и поток Swing, что может вызвать проблемы параллелизма. Лучше не смешивайте их; вместо этого используйте интерфейс O2A агента, отделив приложение/визуализацию конечного пользователя от агента.

person CDerksen    schedule 02.08.2018