2014-11-02 2 views
0

Я хочу зарегистрировать агент varios и использовать этот код.Ошибка при регистрации агента с DF

Ошибка: jade.domain.FIPAAgentManagement.MissingParameter: (недостающей имя параметра DF-агент-описание)

Как исправить ошибку?

Благодаря

В clases

public class Main { 

public static void main(String[] args) { 
    String[] services = {"-gui"}; 
    Boot.main(services); 
    Agent1 = new Agent1(0,0,"a"); 
} 

} 

public class Agent1 extends Agent{ 

public Agent1(int x, int y, String name) { 
     super(x, y, name); 
     setup(); 
    } 

protected void setup(){ 
     System.out.println("hi"); 
     ServiceDescription sd = new ServiceDescription(); 
     sd.setType("buyer"); 
     sd.setName("asa"); 
     register(sd); 
    } 

void register(ServiceDescription sd){ 
      DFAgentDescription dfd = new DFAgentDescription(); 
      dfd.setName(getAID()); 
      dfd.addServices(sd); 

try { 
    DFService.register(this, dfd); 
} 
catch (FIPAException fe) { fe.printStackTrace(); } 

} 

protected void takeDown(){ 
     System.out.println("bye"); 
    } 

} 

ответ

1

Вы не создаете агента правильно. getAID() вернет значение null, а значение DFAgentDescription станет недействительным.

Вам необходимо пройти -agents до jade.Boot, и он создает агент.

public static void main(String[] args) { 
    // the agent's name is agent1, change xy.zy to your package 
    String[] services = {"-gui", "-agents", "agent1:xy.zy.Agent1"}; 
    Boot.main(services); 
} 

Вам не нужно Agent1 = new Agent1(0,0,"a"); и вам не нужен конструктор в Agent1. Метод setup() вызывается автоматически.

Смежные вопросы