Я не могу найти способ выполнить свой класс агента JADE, вызвав JavaCompiler вручную. Я пытаюсь реализовать симулятор и добавил функцию импорта, которая позволяет людям загружать свои классы агентов JADE, и я буду выполнять их на симуляторе для извлечения данных.
Вот код импорта:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int result = compiler.run(null, null, null, importedClassPath);
System.out.println("résultat de la compilation Agent JADE : " + result);
int result2 = compiler.run(null, null, null,
"C:\\Users\\Administrateur\\Desktop\\RoboticsWorkspace\\RuntimeProject\\src\\AcompileJadeMain.java");
System.out.println("résultat de la compilation MAIN : " + result2);
File classesDir = new File(
"C:\\Users\\Administrateur\\Desktop\\RoboticsWorkspace\\RuntimeProject\\bin\\");
File classesDir2 = new File(
"C:\\Users\\Administrateur\\Desktop\\RoboticsWorkspace\\RuntimeProject\\bin\\");
URLClassLoader classLoader, classloader2;
try
{
// Loading the class
classLoader = URLClassLoader.newInstance(new URL[] { classesDir.toURI().toURL() });
classloader2 = URLClassLoader.newInstance(new URL[] { classesDir2.toURI().toURL() });
Class<?> cls, cls2;
cls = Class.forName(importedClassname, true, classLoader);
cls2 = Class.forName("AcompileJadeMain", true, classloader2);
Object instanceAgent = cls.newInstance();
Object instanceMainAgent = cls2.newInstance();
Method call;
try
{
call = cls2.getMethod("main", String[].class);
String[] args = new String[0];
call.invoke(null, new Object[] { args });
} catch (NoSuchMethodException | SecurityException | IllegalArgumentException
| InvocationTargetException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
} catch (MalformedURLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
и вот основное, что компилируется:
String[] commande = new String[3];
String argument="";
argument = argument+"Robocar:ACompilJade(20,25,7,10,Est,5)";
commande[0]="-cp C:\\Users\\Administrateur\\Documents\\Eclipse_BackupProjects\\jade.jar;"
+"C:\\Users\\Administrateur\\Desktop\\RoboticsWorkspace\\RuntimeProject\\bin ";
commande[1]="jade.boot -agents ";
commande[2]=argument;
jade.Boot.main(commande);
Я попытался включить как пути для JADE.rar, так и пути класса агента, но он по-прежнему позволяет найти класс агента, и я получаю следующую ошибку:
Я также импортирую файл jade.rar в путь сборки моего проекта.