2010-03-09 8 views
1

J'ai besoin d'obtenir les noms de méthodes d'une classe à partir d'un fichier java dans un répertoire.Java classloader

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"); 
    } 

Je reçois ClassNotFoundException.

Est-ce la bonne façon de procéder?

tout organisme peut-il proposer la solution s'il vous plaît ...

Répondre

2

Essayez

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

au lieu de

loader.loadClass("Arithmatic.java") 
3

Vous ne pouvez pas charger un fichier .java en tant que classe. Vous devez charger un fichier .class (ce qui signifie qu'il doit être compilé d'abord)

loader.loadClass("Arithmatic", true); 

Dans le cas où vous ne disposez pas de la classe sous forme compilée, vous pouvez le compiler à l'exécution en utilisant JavaCompiler

Questions connexes