我用 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
或
java –cp lib\jade.jar jade.Boot [options] [AgentSpecifierlist]
是否可以使用 Maven 插件构建一个可运行的 jar,所以我只需输入 java -jar myjar.jar
而不是上面的命令?
会 mvn eclipse:eclipse
命令在编辑 pom.xml 文件后更改 eclipse 项目的构建参数?
最佳答案
JADE 没有任何此类插件可用,因为它不是广泛使用的框架,也没有人愿意为它开发插件。但是有一种解决方法可以以常规方式运行它,但这只有在您已经知道 <fully-qualified-agent-class>
的情况下才有效。名字。你可以做的是编写一个扩展 Thread
的类从那Thread
的 run()
方法通过传递 <fully-qualified-agent-class>
来调用 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 <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 文件,从您的主方法或任何其他方式调用此线程。
关于Java 代理开发框架 - Eclipse 和 Maven 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27620218/