任意のパスでのロードクラス
送信によって得られるクラスの情報といえばClass.forName("xxxxx.xxx.xx");しかし、この方法はjvmにロードされたクラスしかロードできません.では、クラスがjvmにロードされず、現在もクラスの情報が取得され、クラスが任意のパスに存在する可能性がある場合は、どうすればいいのでしょうか.方法はURLClassLoaderを利用したloadClass法である.demoパスは次のとおりです.
上記のspservletのclassファイル(パケット構造を含む)をdディスクのtempディレクトリの下に置くことを前提とする
public static void main(String[] args) {
File file=new File("D:/temp");
URL url=null;
try {
url = file.toURL();
System.out.println("url--"+url.getPath());
URL[] urls={url};
URLClassLoader classLoader=new URLClassLoader(urls);
Class class1=classLoader.loadClass("com.skywin.mps.web.servlet.SpServlet");
System.out.println("ClassName"+class1.getName());
Class paramClass[]={};
Method methods[]=class1.getDeclaredMethods();
for (int i = 0; i < methods.length; i++) {
Method tm=methods[i];
System.out.println(tm.getName());
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
上記のspservletのclassファイル(パケット構造を含む)をdディスクのtempディレクトリの下に置くことを前提とする