現在クラスローダーを使用し、クラスから別jarをロードし、実行しようと考えています。
クラスロードされたメソッドに大量のパラメータを渡したいため、呼び出し元クラスでシングルトンを作成し、
呼び出されるJAR内で取得、使用して結果を返すように実装したいと考えています。
lang
1シングルトン 2public class Singleton { 3 private static Singleton singleton= new Singleton(); 4 private static String TMP; 5 public static Singleton getInstance(){ 6 return singleton; 7 } 8 public static String getTmp(){ 9 return TMP; 10 } 11 public static void setTmp(String s){ 12 TMP=s; 13 } 14} 15呼び出し元 16 Singleton sin; 17 sin.getInstance(); 18 sin.setTmp("AAAA"); 19 File file = new File("ss.jar"); 20 URLClassLoader loader = URLClassLoader.newInstance(new URL[]{file.toURI().toURL()}); 21 Class<?> clazz = loader.loadClass("ss"); 22 method = clazz.getMethod("Run"); 23 Object obj = clazz.newInstance(); 24 method.invoke(obj); 25 26呼び出し側 27 public class ss(){ 28 Singleton singleton; 29 singleton.getInstance(); 30 System.out.println(singleton.getTmp()); 31 } 32結果 33null 34
シングルトンは複数インスタンスを作成出来ないはずだと思いますが、
なぜクラスロードされた側ではシングルトンの値を取得できないのでしょうか?
また、取得する方法もあわせてご教示頂ければうれしいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/13 12:47