Java代理开发框架 - Eclipse和Maven集成

时间:2014-12-23 12:18:38

标签: java eclipse maven agents-jade

我使用JADE框架创建了一个maven项目作为依赖项,但是这个框架需要不同的命令来执行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]

是否可以使用maven插件构建 runnable jar ,所以我只需输入java -jar myjar.jar而不是上面的命令?

编辑 pom.xml 文件后,mvn eclipse:eclipse命令会更改eclipse项目的构建参数吗?

2 个答案:

答案 0 :(得分:2)

没有任何这样的插件可用于JADE,因为它没有广泛使用的框架,任何人都没有费心为它开发插件。但是有一种解决方法可以按常规方式运行它,但这只有在您已经知道<fully-qualified-agent-class>名称的情况下才有效。你可以做的是编写一个扩展Thread的类,并从Thread的{​​{1}}方法调用JADE框架代理,方法是传递run()作为参数。请参阅下面的示例。

jadeBootThread.java

<fully-qualified-agent-class>

现在你可以通过使用eclipse插件等创建runnable jar文件,从main方法或任何其他方式调用此线程。

答案 1 :(得分: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);
    }           
}
}