2014-11-02 62 views
0

我想註冊varios代理,並使用此代碼。向DF註冊代理時出錯

的錯誤是:jade.domain.FIPAAgentManagement.MissingParameter:(缺少參數DF-Agent的描述名稱)

如何修正這個錯誤?

感謝

的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將變爲無效。

您應該通過-agentsjade.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()被自動調用。