我有三个 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");
}
我有一个主要应用程序,它包含包含的罐子。我的主应用程序调用 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 方法的消息。
所以让我知道这背后的主要问题和解决方案。