我使用JADE框架作为依赖项创建了一个maven项目,但是与普通的Java应用程序相比,该框架需要不同的命令来执行jar。
建立:
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
<fully-qualified-agent-class>
package_name.Class_name
要么
java –cp lib\jade.jar jade.Boot [options] [AgentSpecifierlist]
是否可以使用maven插件构建 可运行的jar, 所以我只需键入java -jar myjar.jar而不是上面的命令?
java -jar myjar.jar
将mvn eclipse:eclipse编辑命令后Eclipse项目的变化构建参数 的pom.xml 文件?
mvn eclipse:eclipse
JADE没有可用的此类插件,因为它没有得到广泛使用的框架,而且没有人愿意为此开发一个插件。但是有一种解决方法可以按常规方式运行它,但这仅在您已经知道自己的<fully- qualified-agent- class>名字的情况下才有效。您可以做的是编写一个扩展的类,Thread并从Thread的run()方法中通过传递<fully- qualified-agent-class>as参数来调用JADE框架代理。请参阅下面的示例。
<fully- qualified-agent- class>
Thread
run()
<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(); } } }
现在,您可以使用eclipse插件等创建可运行的jar文件,从而从您的main方法或任何其他方式调用此线程。