Lire toutes les méthodes annotés ds un packag
amani
-
amani -
amani -
Bonjour,
Comment faire pour lire toutes les classes d'un fichier.jar dans eclipse les parcourir et afficher toutes les méthodes qui sont annotées par l'annotation action.J'ai réussi le cas d'un seul pacquage dans le fichier.jar et une seule classe dedans qui est appelé par son nom, puis elle était parcouru pour afficher les méthodes annotées par @action. Je me demande comment généraliser: bcpde package dans le fichier.jar et plus qu'une classe dans chacun je veux parcourir toutes les classes sans même connaitre leurs nom au préalable pour afficher toutes les méthodes annotées par @action
Comment faire pour lire toutes les classes d'un fichier.jar dans eclipse les parcourir et afficher toutes les méthodes qui sont annotées par l'annotation action.J'ai réussi le cas d'un seul pacquage dans le fichier.jar et une seule classe dedans qui est appelé par son nom, puis elle était parcouru pour afficher les méthodes annotées par @action. Je me demande comment généraliser: bcpde package dans le fichier.jar et plus qu'une classe dans chacun je veux parcourir toutes les classes sans même connaitre leurs nom au préalable pour afficher toutes les méthodes annotées par @action
A voir également:
- Lire toutes les méthodes annotés ds un packag
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire un fichier epub - Guide
- Lire fichier bin - Guide
- Comment lire un message supprimé sur whatsapp - Guide
- Lire un qr code sur pc - Guide
1 réponse
Ici mon code qui lit toutes le classe sous un package dans le fichier.jar
Il me manque juste de généraliser le cas(bcp de package) et afficher les méthodes annotés par @action sachant que l'annotation est définit ds une interface dans le projet non pas dans le fichier.jar
public class ImportClassesOfJar {
@SuppressWarnings({ "deprecation" })
public static <annotation> void main(final String[] args) {
final String filePath = "chemainDuFichier.NomDeFichier.jar";
final List<String> list = getClasseNamesInPackage(filePath,"");
String className;
final File file = new File(filePath);
URLClassLoader ucl;
try
{
ucl = new URLClassLoader(new URL[] { file.toURL() });
for(int j=0;j<list.size();j++){
className=list.get(j);
final Class<?> driverClazz = ucl.loadClass(className.replace(".class",""));
System.out.println(className);
}
} catch (final Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static List<String> getClasseNamesInPackage
(final String jarName, String packageName){
final ArrayList<String> classes = new ArrayList<String> ();
packageName = packageName.replaceAll("\\." , "/");
try{
final JarInputStream jarFile = new JarInputStream(new FileInputStream (jarName));
JarEntry jarEntry;
while(true) {
jarEntry=jarFile.getNextJarEntry ();
if(jarEntry == null){
break;
}
if((jarEntry.getName ().startsWith ("")) &&
(jarEntry.getName ().endsWith (".class")) ) {
classes.add (jarEntry.getName().replaceAll("/", "\\."));
}
}
}
catch( final Exception e){
e.printStackTrace ();
}
return classes;
}
}
Il me manque juste de généraliser le cas(bcp de package) et afficher les méthodes annotés par @action sachant que l'annotation est définit ds une interface dans le projet non pas dans le fichier.jar
public class ImportClassesOfJar {
@SuppressWarnings({ "deprecation" })
public static <annotation> void main(final String[] args) {
final String filePath = "chemainDuFichier.NomDeFichier.jar";
final List<String> list = getClasseNamesInPackage(filePath,"");
String className;
final File file = new File(filePath);
URLClassLoader ucl;
try
{
ucl = new URLClassLoader(new URL[] { file.toURL() });
for(int j=0;j<list.size();j++){
className=list.get(j);
final Class<?> driverClazz = ucl.loadClass(className.replace(".class",""));
System.out.println(className);
}
} catch (final Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static List<String> getClasseNamesInPackage
(final String jarName, String packageName){
final ArrayList<String> classes = new ArrayList<String> ();
packageName = packageName.replaceAll("\\." , "/");
try{
final JarInputStream jarFile = new JarInputStream(new FileInputStream (jarName));
JarEntry jarEntry;
while(true) {
jarEntry=jarFile.getNextJarEntry ();
if(jarEntry == null){
break;
}
if((jarEntry.getName ().startsWith ("")) &&
(jarEntry.getName ().endsWith (".class")) ) {
classes.add (jarEntry.getName().replaceAll("/", "\\."));
}
}
}
catch( final Exception e){
e.printStackTrace ();
}
return classes;
}
}