2014-12-23 3 views
1

Я создал проект maven с фреймворком JADE как зависимость, но для этой фреймворка требуются разные команды для выполнения jar, чем обычные Java-приложения.Java Agent Development Framework - интеграция Eclipse и Maven

Сложение:

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] 

Можно ли построить работоспособный банку с использованием Maven плагин, так что я просто наберите java -jar myjar.jar вместо указанной выше команды?

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

+1

Я построил проект с использованием рамки JADE, но я не думаю, что имеется какой-либо плагин для вашей цели ioning. – Setu

ответ

2

Существует такой плагин для JADE, потому что он широко не используется, и никто не потрудился разработать для него плагин. Но есть обходной путь, чтобы запустить его обычным способом, но это будет работать, только если вы уже знаете свои имена <fully-qualified-agent-class>. что вы можете сделать, это написать класс, который расширяет Thread и из этого метода Threadrun() вызывать агент среды 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(); 
    } 

} 
} 

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

+0

Это отличный обходной путь! Я попробую, спасибо вам большое! – Cristi

+1

Рад, что было полезно. Дайте мне знать, если у вас возникнут какие-либо дополнительные проблемы, я построил полностью работающий проект uni с картой JADE. – Setu

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

Пожалуйста, объясните это – Mazz

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

  • Нет связанных вопросов^_^