Как загрузить файлы .class в Java, когда классы связаны? - PullRequest
1 голос
/ 20 сентября 2019

Я пытаюсь загрузить набор файлов .class из определенного пути (пакета), используя загрузчик классов Java.Проблема заключается в следующем: когда один из этих классов связан с последним классом или классом в другом пакете, загрузчик классов выбрасывает NoClassDefFoundError.Как решить эту проблему?Вот мой код

public ArrayList<Class<?>> readFiles(String nomeFile) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException {

           File f = new File(nomeFile);
           String[] files = f.list();
           for (int i = 0; i < files.length; i++) {
            if (files[i].endsWith(".class")) {
            Class<?> mycls;
               String fileName = files[i];
               String fnm=nomeFile+"/"+fileName;//file canonical name.class
               ByteArrayOutputStream out = new ByteArrayOutputStream();
               try {
                   InputStream in = new FileInputStream(fnm);

                   byte [] buff = new byte[4096];
                   while (true) {
                       int c = in.read(buff);
                       if (c == -1) break;
                       out.write(buff, 0, c);
                   }
                   mycls  = defineClass(null, out.toByteArray(), 0, out.toByteArray().length);
                   System.out.println(mycls.getCanonicalName()+" class is loaded");
                    classes.add(mycls) ;


               }
           }
            return classes;

       }
...