3 つの 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");
}
私は1つのメインアプリケーションを持っており、それにはjarが含まれています。私のメイン アプリケーションは、displayWeLcomeMessage() メソッドを呼び出します。
最初の JAR がクラスパスに追加され、2 番目の 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 のメソッドと同じメッセージが表示されます。3 番目の JAR で、パッケージ名を変更しました。つまり、 com.amit.servicesImpl.TestServicesImplがcom.amit.servicesImpl2.TestServicesImplに変更され 、今回は正常に動作し、JAR 3 のメソッドのメッセージがここに表示されます。
この背後にある主な問題とその解決策を教えてください。