我有三個Jar文件。所有jar文件都包含相同的類TestServicesImpl和相同方法displayWeLcomeMessage()但有不同的消息(輸出)displayWeLcomeMessage()。 實施例:調用具有相同packageName的相同方法來自不同的JAR
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添加到classpath中,並將第二個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的方法的消息。
因此,讓我知道背後的主要問題和解決方案。