Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.25 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Hashtable;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FilenameFilter;
  7.  
  8. public class CL extends ClassLoader {
  9. private Hashtable classes = new Hashtable();
  10. private List<Class> loadedclasses = new ArrayList<Class>();
  11. private String filepath = "";
  12.  
  13. public CL() {
  14. }
  15.  
  16. public void setfilepath(String s)
  17. {
  18. filepath = s;
  19. }
  20. private byte getClassFromLocal(String className)[] {
  21. byte result[];
  22. try {
  23. FileInputStream fi = new FileInputStream(filepath+"\\"+className+".class");
  24. result = new byte[fi.available()];
  25. fi.read(result);
  26. return result;
  27. } catch (Exception e) {
  28. return null;
  29. }
  30. }
  31.  
  32. public Class loadClass(String className) throws ClassNotFoundException {
  33. return (loadClass(className, true));
  34. }
  35.  
  36. public synchronized Class loadClass(String className, boolean resolveIt)
  37. throws ClassNotFoundException {
  38. Class result;
  39. byte classData[];
  40.  
  41. result = (Class) classes.get(className);
  42. if (result != null) {
  43. return result;
  44. }
  45.  
  46. try {
  47. result = super.findSystemClass(className);
  48. return result;
  49. } catch (ClassNotFoundException e) {
  50. }
  51.  
  52. classData = getClassFromLocal(className);
  53. if (classData == null) {
  54. throw new ClassNotFoundException();
  55. }
  56.  
  57. result = defineClass(className,classData, 0, classData.length);
  58.  
  59. if (resolveIt) {
  60. resolveClass(result);
  61. }
  62. classes.put(className, result);
  63. loadedclasses.add(result);
  64. return result;
  65. }
  66. public synchronized void loadAllClasses()
  67. {
  68. File dir = new File(filepath);
  69. FilenameFilter ff = new FilenameFilter(){
  70. public boolean accept(File dir,String name) {return name.endsWith(".class");}};
  71. String [] files = dir.list(ff);
  72. for(int i=0;i<files.length;i++)
  73. {
  74. files[i] = files[i].substring(0,files[i].indexOf('.'));
  75. try{ this.loadClass(files[i]); } catch(Exception e) {}
  76. }
  77. }
  78. public ArrayList<Class> getClasses()
  79. {
  80. return (ArrayList<Class>)loadedclasses;
  81. }
  82. public synchronized void loadClassForName(String name) throws Exception
  83. {
  84. loadedclasses.add(this.loadClass(name));
  85.  
  86. }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement