我找不到通过手动调用 JavaCompiler 来执行我的代理 JADE 类的方法。我正在尝试实现一个模拟器,我添加了一个导入功能,允许人们加载他们的 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 文件导入到我的项目的构建路径中。