Загрузчик классов Java - PullRequest
       17

Загрузчик классов Java

1 голос
/ 09 марта 2010

Мне нужно получить имена методов класса из java-файла в каталоге.

   File file=new File("C:/class/");
    try {
      // Convert File to a URL
      URL url = file.toURL();          // file:/c:/class/
      URL[] urls = new URL[]{url};

      // Create a new class loader with the directory
      URLClassLoader loader = new URLClassLoader(urls);

      // Load in the class; Class.childclass should be located in
      // the directory file:/c:/class/
      Class cls = loader.loadClass("Arithmatic.java");
      Method[] methods=cls.getMethods();
      for(Method method:methods){
       System.out.println("Method name:"+method.getName());
      }
  } catch (MalformedURLException e) {
   System.out.println("Exception");
  } catch (ClassNotFoundException e) {
   System.out.println("Class not found exception");
  }

Я получаю ClassNotFoundException.

Это правильный путь?

Может ли кто-нибудь предложить решение, пожалуйста ...

Ответы [ 2 ]

3 голосов
/ 09 марта 2010

Вы не можете загрузить файл .java как класс.Вы должны загрузить файл .class (что означает, что он должен быть скомпилирован первым)

loader.loadClass("Arithmatic", true);

Если у вас нет класса в скомпилированной форме, вы можете скомпилировать его во время выполнения, используя JavaCompiler

2 голосов
/ 09 марта 2010

Попробуйте

Class.forName("Arithmatic", true, loader)

вместо

loader.loadClass("Arithmatic.java")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...