Создать агента в JADE - PullRequest
       27

Создать агента в JADE

0 голосов
/ 20 сентября 2019

У меня проблемы с созданием агента с JADE.Я действительно новичок в этой платформе и не могу использовать / создавать агентов.

Моя структура

/
  Applications
    jade
      lib
        jade.jar
        jadeExamples.jar
      src
        examples
          hello
            HelloWorldAgent.class
            HelloWorldAgent.java

Мой файл HelloWorldAgent.java

package examples.hello;

import jade.core.Agent;

public class HelloWorldAgent extends Agent {
    protected void setup() {
        System.out.println("Hello! My name is "+getLocalName());
    }
}

Следующие шаги по созданию агента:

  1. /Applications/jade/src/examples/hello $ javac *.java

  2. /Applications/jade/src/examples/hello $ java jade.Boot -gui -agents fred:examples.hello.HelloWorldAgent

Myclasspath

/Library/Java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home:/Applications/jade/lib/jade.jar:/Applications/jade/lib/jadeExamples.jar:/Applications/jade/src/

Выход

Sep 21, 2019 5:28:05 PM jade.core.Runtime beginContainer
INFO: ----------------------------------
    This is JADE 4.5.0 - revision 6825 of 23-05-2017 10:06:04
    downloaded in Open Source, under LGPL restrictions,
    at http://jade.tilab.com/
----------------------------------------
Sep 21, 2019 5:28:05 PM jade.imtp.leap.LEAPIMTPManager initialize
INFO: Listening for intra-platform commands on address:
- jicp://192.168.1.104:1099

Sep 21, 2019 5:28:06 PM jade.core.BaseService init
INFO: Service jade.core.management.AgentManagement initialized
Sep 21, 2019 5:28:06 PM jade.core.BaseService init
INFO: Service jade.core.messaging.Messaging initialized
Sep 21, 2019 5:28:06 PM jade.core.BaseService init
INFO: Service jade.core.resource.ResourceManagement initialized
Sep 21, 2019 5:28:06 PM jade.core.BaseService init
INFO: Service jade.core.mobility.AgentMobility initialized
Sep 21, 2019 5:28:06 PM jade.core.BaseService init
INFO: Service jade.core.event.Notification initialized
Sep 21, 2019 5:28:11 PM jade.mtp.http.HTTPServer <init>
INFO: HTTP-MTP Using XML parser com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
Sep 21, 2019 5:28:11 PM jade.core.messaging.MessagingService boot
INFO: MTP addresses:
http://192.168.1.104:7778/acc
Hello World! My name is fred
Sep 21, 2019 5:28:11 PM jade.core.AgentContainerImpl joinPlatform
INFO: --------------------------------------
Agent container Main-Container@192.168.1.104 is ready.
--------------------------------------------

Моя проблема

Если я изменю сообщение в HelloWorldAgent (например, System.out.println("Hello ! My name is "+getLocalName());), он не обновляется при запуске агента (консоль говорит Hello World! My name is fred).И когда я создаю новый класс в папке hello, я не могу найти своего агента в графическом интерфейсе.

Что я пропустил?

Спасибо за ваши ответы и хорошей недели-конец

1 Ответ

1 голос
/ 21 сентября 2019

Вы не правильно установили classpath.Как упоминалось в https://stackoverflow.com/a/2396759/286934, ваш classpath может содержать два типа записей:

Итак, classpath содержат:

  • JAR-файлы и
  • Пути к вершине иерархии пакетов.

В вашем случае у вас есть ссылка ТОЛЬКО на следующие .jar файлы:

  • /Library/Java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home
  • /Applications/jade/lib/jade.jar
  • /Applications/jade/lib/jadeExamples.jar

Обратите внимание, что ваш рабочий путь /Applications/jade/src/examples/hello/ не находится в пути к классам.Это означает, что ваши пользовательские классы Jade не видны / недоступны.

Чтобы решить вашу проблему, вы должны добавить дополнительные пути, которые вы хотите использовать в ваших путях к классам.Обычно вы используете каталог ., чтобы указать, что вам нужен «текущий каталог» в вашем classpath.

Помните, что у вас есть JAR-файл jadeExamples.jar в вашем classpath.Если у вас есть файл .class для вашего измененного класса HelloWorldAgent, может быть неясно, какой класс загружает JVM, файл из файла JAR или файл .class из файловой системы.Не предоставляйте один и тот же класс с одним и тем же пакетом в вашем classpath дважды или даже не изменяйте файл jadeExamples.jar новым измененным файлом JAR (это может быть еще более запутанным).Вместо этого создайте новый агент в ВАШЕМ пакете / пространстве имен / каталоге и загрузите его -agents foobar:your.package.and.ClassName, но убедитесь, что путь к классу установлен правильно.

...