首页 > 解决方案 > 类相关时如何在java中加载.class文件?

问题描述

我正在尝试使用 java 类加载器从特定路径(包)加载一组 .class 文件。问题是:当这些类中的一个与后一个类或另一个包中的类相关时,类加载器会抛出 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;

       }

标签: javaclassclassloader

解决方案


推荐阅读