Среда разработки агента Java - интеграция Eclipse и Maven

1

Я создал проект maven с JADE framework как зависимость, но для этой фреймворка нужны разные команды для выполнения jar, чем обычные java-приложения.

Телосложение:

javac –classpath <JADE-classes> Class_name.java

Бег:

java –classpath <JADE-classes> jade.Boot <agent-local-name>:<fully-qualified-agent-class>

Где <fully-qualified-agent-class> - package_name.Class_name

или

java –cp lib\jade.jar jade.Boot [options] [AgentSpecifierlist]

Можно ли создать runnable jar с помощью плагинов maven, поэтому я просто java -jar myjar.jar вместо команды выше?

Будет ли mvn eclipse:eclipse изменить параметры сборки команды eclipse проекта eclipse после редактирования файла pom.xml?

  • 1
    Я создал проект с помощью JADE Framework, но я не думаю, что есть какой-либо плагин для той цели, о которой вы упоминаете.
Теги:
maven
agents-jade

2 ответа

2
Лучший ответ

Для JADE такого плагина нет, потому что он не широко используется, и никто не потрудился разработать для него плагин. Но есть обходной путь, чтобы запустить его обычным способом, но это будет работать, только если вы уже знаете имена <fully-qualified-agent-class>. что вы можете сделать, это написать класс, который расширяет Thread и из этого метода run() Thread вызывает агент среды JADE, передавая <fully-qualified-agent-class> качестве аргументов. См. Пример ниже.

jadeBootThread.java

public class jadeBootThread extends Thread {

private final String jadeBoot_CLASS_NAME = "jade.Boot";

private final String MAIN_METHOD_NAME = "main";

//add the <agent-local-name>:<fully-qualified-agent-class> name here;
// you can add more than one by semicolon separated values.
private final String ACTOR_NAMES_args = "Agent1:com.myagents.agent1";

private final String GUI_args = "-gui";

private final Class<?> secondClass;

private final Method main;

private final String[] params;

public jadeBootThread() throws ClassNotFoundException, SecurityException, NoSuchMethodException {
    secondClass = Class.forName(jadeBoot_CLASS_NAME);
    main = secondClass.getMethod(MAIN_METHOD_NAME, String[].class);
    params = new String[]{GUI_args, ACTOR_NAMES_args};
}

@Override
public void run() {
    try {
        main.invoke(null, new Object[]{params});
    } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
       ex.printStacktrace();
    }

}
}

Теперь вы можете вызвать этот поток из своего основного метода или любым другим способом, создав файл runnable jar с плагином eclipse и т.д.

  • 0
    Это отличный обходной путь! Я попробую, большое спасибо !!!
  • 1
    Рад, что было полезно. Дайте мне знать, если у вас возникнут какие-либо дальнейшие проблемы, я создал полностью работающий унифицированный проект с JADE framework.
0

Лучшее решение для этого:

public class Example03  {

public static void main(String[] args){

    String host;
    int port;
    String platform = null; //default name
    boolean main = true;

    host = "localhost";
    port = -1;          //default-port 1099

    Runtime runtime = Runtime.instance();
    Profile profile = null;
    AgentContainer container = null;

    profile = new ProfileImpl(host, port, platform, main);

    // create container
    container = runtime.createMainContainer(profile);

    // create the agents
    try {

        AgentController agent1 = container.createNewAgent(
                    "Agent1", 
                   routing.TransportAgent.class.getName(), 
                    args);
        AgentController agent2 = container.createNewAgent(
                "Agent2", 
               routing.TransportAgent.class.getName(), 
                args);
         // create the GUI
        AgentController rma = container.createNewAgent("rma", "jade.tools.rma.rma", null);

        // start the agents
        agent1.start();
        agent2.start();
        rma.start();
    } catch(StaleProxyException e) {
        throw new RuntimeException(e);
    }           
}
}
  • 1
    Пожалуйста, объясните это

Ещё вопросы

Сообщество Overcoder
Наверх
Меню