Java 动态加载jar文件
目前我有02个jar文件,a.jar和b.jar,这两个jar文件都包含一个类名MyClass,它位于相同的包名“application.test”中,具有相同的方法Java 动态加载jar文件,java,eclipse,jar,Java,Eclipse,Jar,目前我有02个jar文件,a.jar和b.jar,这两个jar文件都包含一个类名MyClass,它位于相同的包名“application.test”中,具有相同的方法 void run (){ ...} 在a.jar中,run方法实现如下 void run (){ System.out.print("a.jar"); } void run (){ System.out.print("b.jar"); } 在b.jar中,run方法实现如下 void run (){
void run (){ ...}
在a.jar中,run方法实现如下
void run (){
System.out.print("a.jar");
}
void run (){
System.out.print("b.jar");
}
在b.jar中,run方法实现如下
void run (){
System.out.print("a.jar");
}
void run (){
System.out.print("b.jar");
}
在我的主应用程序中,我将通过以下操作动态加载其lib文件夹中的exists 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();
}
}
我的问题是,当我使用EclipseIDE运行main应用程序时,lib文件夹中有a.jar和b.jar,结果是正确的。在控制台中,打印出行“a.jar”和“b.jar”。但是,当我将MainApplication导出到可运行的jar并使用命令行运行时,在控制台中,会打印两行“a.jar”和“a.jar”,尽管在eclipse期间运行时效果良好。
有人能告诉我我做错了什么吗?
谢谢。如何从命令行运行它?(您不希望将a.jar和b.jar放在类路径上,因为Java将首先在其中查找类,然后再查找您的子类加载器)我使用这个命令运行,“Java-jar mainApplication.jar”a.jar和b.jar不包括在mainApplication的类路径中,应用程序将查看lib文件夹,并在最后加载扩展名为.jar的所有文件