Работа с JADE в Eclipse: Создание первого агента!

Автор: Алексей Скороходов

Для создания агента как видно из названия нам понадобится JADE, eclipse и jdk.
После того, как все это извлечено из архивов и установлено, мы можем создать своего первого агента на платформе JADE (Java Agent DEvelopment Framework). Не будем нарушать традиции и первым нашим агентом будет агент «HelloWorld».

Сначала необходимо создать Java-проект нашего агента в среде Eclipse и подключить JADE к этому проекту (см. Рис 1.)

Мастер создания JAVA проекта

Рисунок 1.

Далее, в полученном проекте в папке src создаем Package c именем «hello». Теперь пришла очередь создать class с именем «HelloWorld» .

Ну и наконец код агента. В нашем случае он будет выглядеть так:


package hello;

import jade.core.Agent;

public class HelloWorld extends Agent
{
public void setup()
{
System.out.println(”Hello Yuhana, my name is : ” +getAID().getName());
}
}

Теперь необходимо подключить JADE (рис. 2 и 3).

Мастер создания JAVA проекта

Рисунок 2.

Кликаем на кнопку с именем «Add External JARs» и указываем путь к библиотекам JADE, в моем случае это «D:\diplom\stop\bin\jade\lib».
Результат наших действий:

Add External JARs JADE

Рисунок 3.

Перед тем как запустить нашего агента необходимо настроить параметры запуска проекта. Это можно сделать выбрав в выпадающем меню «Open Run Dialog», как показано на рис. 4.

Open Run Dialog

Рисунок 4.

Далее, необходимо для «Java Application» создать новую конфигурацию. Во вкладке «Main» присвоим имя нашей конфигурации «test_agents». В «Main class» при нажатии кнопки «Search» выбираем «Boot — jade» и ставил «галочку» в «Include system libraries when searching for a main class» (см. Рис. 5 ).

Выполнение Агента

Рисунок 5.

Далее, во вкладке «Arguments» в «Program argument» добавляем строку «-gui jade.Boot test:hello.HelloWorld»!!!

Ну вот и все, запускаем и получаем агента, выполнившего элементарное действие:

Выполнение Агента

Рисунок 6.

14 Responses to Работа с JADE в Eclipse: Создание первого агента!

  1. Elina:

    Здравствуйте! Я сделала все так, как Вы описали. После запуска получаю следующую ошибку:

    17.06.2008 22:34:16 jade.core.Runtime beginContainer
    INFO: ———————————-
    This is JADE 3.6 — revision 6032 of 2008/05/05 14:07:10
    downloaded in Open Source, under LGPL restrictions,
    at http://jade.tilab.com/
    —————————————-
    17.06.2008 22:34:17 jade.core.AgentContainerImpl joinPlatform
    SCHWERWIEGEND: Some problem occurred while joining agent platform.
    jade.core.ProfileException: Can’t get a proxy to the Platform Manager [nested jade.core.IMTPException: The Service Manager was already bound in the RMI Registry [nested java.rmi.AlreadyBoundException: ServiceManager]]
    at jade.core.ProfileImpl.createPlatformManager(ProfileImpl.java:574)
    at jade.core.ProfileImpl.getPlatformManager(ProfileImpl.java:487)
    at jade.core.ProfileImpl.getServiceManager(ProfileImpl.java:501)
    at jade.core.AgentContainerImpl.init(AgentContainerImpl.java:336)
    at jade.core.AgentContainerImpl.joinPlatform(AgentContainerImpl.java:472)
    at jade.core.Runtime.createMainContainer(Runtime.java:148)
    at jade.Boot.(Boot.java:130)
    at jade.Boot.main(Boot.java:70)
    Nested Exception:
    jade.core.IMTPException: The Service Manager was already bound in the RMI Registry [nested java.rmi.AlreadyBoundException: ServiceManager]
    at jade.imtp.rmi.RMIIMTPManager.exportPlatformManager(RMIIMTPManager.java:275)
    at jade.core.ProfileImpl.createPlatformManager(ProfileImpl.java:563)
    at jade.core.ProfileImpl.getPlatformManager(ProfileImpl.java:487)
    at jade.core.ProfileImpl.getServiceManager(ProfileImpl.java:501)
    at jade.core.AgentContainerImpl.init(AgentContainerImpl.java:336)
    at jade.core.AgentContainerImpl.joinPlatform(AgentContainerImpl.java:472)
    at jade.core.Runtime.createMainContainer(Runtime.java:148)
    at jade.Boot.(Boot.java:130)
    at jade.Boot.main(Boot.java:70)
    Nested Exception:
    java.rmi.AlreadyBoundException: ServiceManager
    at sun.rmi.registry.RegistryImpl.bind(Unknown Source)
    at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
    at sun.rmi.server.UnicastServerRef.oldDispatch(Unknown Source)
    at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
    at sun.rmi.transport.Transport$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
    at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
    at sun.rmi.server.UnicastRef.invoke(Unknown Source)
    at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
    at java.rmi.Naming.bind(Unknown Source)
    at jade.imtp.rmi.RMIIMTPManager.exportPlatformManager(RMIIMTPManager.java:224)
    at jade.core.ProfileImpl.createPlatformManager(ProfileImpl.java:563)
    at jade.core.ProfileImpl.getPlatformManager(ProfileImpl.java:487)
    at jade.core.ProfileImpl.getServiceManager(ProfileImpl.java:501)
    at jade.core.AgentContainerImpl.init(AgentContainerImpl.java:336)
    at jade.core.AgentContainerImpl.joinPlatform(AgentContainerImpl.java:472)
    at jade.core.Runtime.createMainContainer(Runtime.java:148)
    at jade.Boot.(Boot.java:130)
    at jade.Boot.main(Boot.java:70)
    17.06.2008 22:34:17 jade.core.Runtime$1 run
    INFO: JADE is closing down now.

    Не подскажите ли, где может быть ошибка?
    С уважением
    Elina

  2. Ошибку выдает Eclipse какой версии?
    КАкая платформа (win, lin)? какая версия java машины используется?

  3. Alex:

    Эта проблема возникает когда у вашего компьютера не назначено ip — адреса. Что бы все заработало я знаю два способа:
    1 Это руками присвоить ip — адрес (Не наш способ которым я какое то время пользовался ))))
    2 Это к строке «-gui jade.Boot test:hello.HelloWorld» добвать «-detect-main false» и в итоге получим «-detect-main false -gui jade.Boot test:hello.HelloWorld».
    Надеюсь что помог. Спасибо вам, за то что используете то что я написал (приятно )))))
    Извините что так поздно ответил новую работу искал )))

  4. DenisMitin:

    Круто — заработало!

  5. Алексей Качаев:

    Привет. Скажи, пожалуйста. А где можно скачать jdk, а то ссылка в посте не работает, а очень хотелось бы попробовать с JADE поэкспериментировать!

  6. igo:

    у меня при старте выдаёт

    02.11.2010 19:51:43 jade.Boot parseCmdLineArgs
    WARNUNG: WARNING: ignoring command line argument test:hello.HelloWorld occurring after agents specification
    02.11.2010 19:51:43 jade.Boot parseCmdLineArgs
    WARNUNG: Note that agent specifications must be separated by a semicolon character «;» without spaces
    02.11.2010 19:51:43 jade.core.Runtime beginContainer
    INFO: ———————————-
    This is JADE snapshot — revision 6357 of 2010/07/06 16:27:34
    downloaded in Open Source, under LGPL restrictions,
    at http://jade.tilab.com/
    —————————————-
    Retrieving CommandDispatcher for platform null
    02.11.2010 19:51:43 jade.imtp.leap.CommandDispatcher addICP
    WARNUNG: Error adding ICP jade.imtp.leap.JICP.JICPPeer@24e2dae9[Error: Not possible to launch JADE on a remote host (127.0.1.1). Check the -host and -local-host options.].
    02.11.2010 19:51:43 jade.core.AgentContainerImpl joinPlatform
    SCHWERWIEGEND: Communication failure while joining agent platform: No ICP active
    jade.core.IMTPException: No ICP active
    at jade.imtp.leap.LEAPIMTPManager.initialize(LEAPIMTPManager.java:138)
    at jade.core.AgentContainerImpl.init(AgentContainerImpl.java:316)
    at jade.core.AgentContainerImpl.joinPlatform(AgentContainerImpl.java:482)
    at jade.core.Runtime.createMainContainer(Runtime.java:165)
    at jade.Boot.main(Boot.java:89)
    02.11.2010 19:51:43 jade.core.Runtime$1 run
    INFO: JADE is closing down now.

    что делать и как ему указать явнo ip?

    ps os ubuntu, openjdk+jade 4.0.1, ip на wlan 192.168.0.11

  7. Отвечают на вопросы по теме здесь http://forum.semanticfuture.net/viewforum.php?id=10

  8. Sally:

    igo, это похоже на проблему с айпишником. А Вы пробовали добавить в строку аргументов «-detect-main false», как описано в предыдущих комментариях?

  9. igo:

    я же читал другие комментарии, поэтому у меня прописанно так
    -detect-main false; -gui; jade.Boot test:hello.HelloWorld

    семиколоны потому что без них выдаёт ошибки, проблема решилась втыканием lan, чем не устрол wlan, так и не понял

    спасибо за оперативность 😉

  10. Yaroslav:

    У меня JADE запускается, а вот никакого нового агента test там нет, инициализацию тоже не выполняет, хотя все делал, как тут написано, с чем это может быть связано?

  11. Алексей:

    здраувствуйте сергей!
    Я использовал Jade 3.6 для С#.
    Я создаль 2 проекта клиент и сервера.
    На сервере (main-container) и имеет агент с названием «server».
    На клиенте (container-1) и имеет агент с названием «client».

    При тестировании:
    Сервер на компьютере А.
    Клиент на компьютер Б.
    Если компьютер А и компьютер Б в локальной сети-они нормально работают.
    Ксли Компьютер А — имеет глобальной адрес, компьютер Б в локальной сети но можно доступ в интернете, тогда имеет ошибка container-1 unreachable.
    Скажите мне пожалуйста как решить эту проблему?
    Спасибо за ранее!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


Ответить с помощью ВКонтакте: