目前我有02个jar文件,a.jar和b.jar,两个jar文件都包含一个类名MyClass,它在同一个包名“application.test”中,它有相同的方法
void run (){ ...}
在a.jar中,run方法实现如下
void run (){
System.out.print("a.jar");
}
在b.jar中,run方法实现如下
void run (){
System.out.print("b.jar");
}
在我的主应用程序中,我将通过执行以下操作在其lib文件夹中动态加载存在的jar文件:
public class DynamicLoader{
public Class<?> classToLoad;
public Object instance;
public String classname;
public DynamicLoader(URL[] JarURL, String classname) {
URLClassLoader child = new URLClassLoader(JarURL, this.getClass().getClassLoader());
this.classname = classname;
classToLoad = Class.forName(classname, true, child);
instance = classToLoad.newInstance();
}
}
基本上,最后我将有两个名为jar1和jar2的DynamicLoader对象。然后我将通过
对jar1和jar2对象执行方法run()Method method = classToLoad.getDeclaredMethod("run");
method.invoke(instance);
我遇到的问题是,当我使用EclipseIDE运行我的MainApplication时,在lib文件夹中使用a.jar和b.jar,结果是正确的。在控制台中,打印出“a.jar”和“b.jar”行。但是当我将MainApplication导出到一个可运行的jar并使用命令行运行时,在控制台中会打印两行“a.jar”和“a.jar”,尽管它在eclipse期间运行时工作正常。
有人可以告诉我,我做错了什么吗?
谢谢。