【发布时间】:2013-11-04 13:26:53
【问题描述】:
我有三个 Jar 文件。所有 jar 文件都包含相同的类 TestServicesImpl 和相同的方法 displayWeLcomeMessage() 但具有不同的 displayWeLcomeMessage() 消息(输出)。 示例:
public void displayWeLcomeMessage() {
System.out.println("wecome msg of JAR version first");
}
public void displayWeLcomeMessage() {
System.out.println("wecome msg of JAR version two");
}
public void displayWeLcomeMessage() {
System.out.println("wecome msg of JAR version third");
}
我有一个主应用程序,其中包含 jars。我的主应用程序调用 displayWeLcomeMessage() 方法。
第一个 JAR 被添加到类路径中,第二个 JAR 被加载自定义类加载器并调用方法 displayWeLcomeMessage()。
File file = new File("C:/Users/amitk/Desktop/Test_1.0.2.jar");
@SuppressWarnings("deprecation")
URL url = file.toURL();
URL[] urls = new URL[]{url};
URLClassLoader loader = new URLClassLoader(urls);
Class classS = loader.loadClass("com.amit.servicesImpl.TestServicesImpl");
Object object = classS.newInstance();
Method getmsg = classS.getMethod("displayWeLcomeMessage");
getmsg.invoke(object);
但它首先显示与 JAR 方法相同的消息。 在我的第三个 JAR 中,我更改了包名。 那是 com.amit.servicesImpl.TestServicesImpl 改为 com.amit.servicesImpl2.TestServicesImpl 这次它可以正常工作了,这里显示了 JAR 3 方法的消息。
所以让我知道这背后的主要问题和解决方案。
【问题讨论】:
标签: java jar classloader