Bonjour,
dans le cadre des mes cours, j'ai un projet à faire qui consiste en gros à refaire le célèbre EDI éclipse,bien sur en plus simple.
Mais si tôt commencé, si tôt confronté à un problème !!
Je vous explique, j'ai une classe réflexionPrg qui dois me retourner le contenu d'une classe (les méthodes, les constructeurs puis on verra par la suite) qu'on récupère à l'aide du chemin passé en paramètre.
Le problème est que sa marche seulement si la classe est dans le répertoire courant et que je passe en paramètre juste le nom de la classe, dans tous les autres cas une érreur est levé et le programme plante.
Avez vous une solution à me proposer, svp ...
---------------------------Mes classes (c'est le tout début de mon projet donc c'est encore clair----------------------------
import java.lang.Class;
import java.lang.reflect.*;
public class ReflexionPrg
{
public ReflexionPrg()
{}
public static void main(String[] args)
{
Class aEtudier = null;
Constructor tabConstructeur[];
Method tabMethod[];
EdiLoader monLoader = null;
try
{
monLoader = new EdiLoader();
aEtudier = monLoader.loadEdiClass("Courreur");
tabConstructeur = aEtudier.getConstructors();
tabMethod = aEtudier.getDeclaredMethods();
for(int i=0; i<tabConstructeur.length; i++)
{
System.out.println(tabConstructeur[i]);
}
for(int i=0; i<tabMethod.length; i++)
{
System.out.println(tabMethod[i]);
}
}
catch(ClassNotFoundException e)
{
System.out.println("Classe non trouve.");
}
}
}
-----------------------------------------------------------------------------------------------------
import java.io.*;
public class EdiLoader extends ClassLoader
{
public Class loadEdiClass(String aName) throws ClassNotFoundException
{
Class ret = null;
byte buffer[] = null;
System.out.println(aName);
InputStream is = getClass().getResourceAsStream(aName+".class");
if (is != null)
{
try
{
buffer = new byte[is.available()];
is.read(buffer);
ret = defineClass(aName, buffer, 0, buffer.length);
resolveClass(ret);
}
catch(IOException e)
{
throw new ClassNotFoundException(aName);
}
}
else
{
throw new ClassNotFoundException(aName);
}
return ret;
}
}
Configuration: Windows XP
Internet Explorer 7.0