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

我创建了一个使用JADE框架作为依赖项的maven项目,但是这个框架需要不同的命令来执行jar而不是普通的java应用程序。

建立:

javac –classpath  Class_name.java 

跑:

 java –classpath  jade.Boot : 

其中package_name.Class_name

要么

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

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

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

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

jadeBootThread.java

 public class jadeBootThread extends Thread { private final String jadeBoot_CLASS_NAME = "jade.Boot"; private final String MAIN_METHOD_NAME = "main"; //add the : 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(); } } } 

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

更好的解决方案:

 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); } } }