IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Platform Discussion :

Utiliser JDT pour analyser un JAR hors projet


Sujet :

Eclipse Platform

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2008
    Messages : 38
    Points : 26
    Points
    26
    Par défaut Utiliser JDT pour analyser un JAR hors projet
    Bonjour,

    J'ai une application RCP qui demande à l'utilisateur de rentrer un chemin vers un répertoire dans les préférences (PreferenceStore).

    Dans ce répertoire se trouvent des jars avec des classes et ressources. Je voudrai analyser ces jars: utiliser JDT notament pour récupérer toutes les sous classes d'une classe donnée (newHierarchy).

    Or apparement, pour avoir un IType et appeler newTypeHierarchy, il faut un projet ou le workspace. Dans mon cas, je n'ai encore aucun projet dans le workspace, et de toute façon je ne dois pas dépendre d'un projet.

    comment puis-je faire?

    merci

  2. #2
    Membre émérite
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Inscrit en
    Juillet 2008
    Messages
    1 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 469
    Points : 2 997
    Points
    2 997
    Par défaut
    Je pense que la solution est d'avoir un projet temporaire ou dédié a ces tests. Quand tu choisis un jar a analyser, tu les mets dans le classpath du projet, tu récupéres tes IType et leurs infos, et une fois que c'est fini, tu enleves les jar du classpath, et voila...
    Pour du HTML, CSS, JavaScript, TypeScript, JSon, Yaml, Node... dans Eclipse IDE, installe Eclipse Wild Web Developer
    Pour du Rust dans Eclipse IDE, installe Eclipse Corrosion
    Follow me on twitter

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2008
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Mickael_Istria Voir le message
    Je pense que la solution est d'avoir un projet temporaire ou dédié a ces tests. Quand tu choisis un jar a analyser, tu les mets dans le classpath du projet, tu récupéres tes IType et leurs infos, et une fois que c'est fini, tu enleves les jar du classpath, et voila...
    effectivement, ca semble être la seule solution. Il est vraiment dommage de ne pouvoir utiliser JDT qu'au sein d'un projet...

  4. #4
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    En même temps, comme son nom l'indique JDT est fait pour le développement Java (Java Development Tools)...
    Pas de questions technique par MP, les forums sont là pour ça.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2008
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Gueritarish Voir le message
    En même temps, comme son nom l'indique JDT est fait pour le développement Java (Java Development Tools)...
    donc pour clore, voici le code, il faut au moins 1 projet Java, donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    package com.moow.animator.studio.handlers;
     
    import java.util.HashMap;
    import java.util.Map;
     
    import org.eclipse.core.commands.AbstractHandler;
    import org.eclipse.core.commands.ExecutionEvent;
    import org.eclipse.core.commands.ExecutionException;
    import org.eclipse.core.resources.IProject;
    import org.eclipse.core.resources.IWorkspace;
    import org.eclipse.core.resources.IWorkspaceRoot;
    import org.eclipse.core.resources.ResourcesPlugin;
    import org.eclipse.core.runtime.CoreException;
    import org.eclipse.core.runtime.NullProgressMonitor;
    import org.eclipse.jdt.core.IJavaProject;
    import org.eclipse.jdt.core.IType;
    import org.eclipse.jdt.core.ITypeHierarchy;
    import org.eclipse.jdt.core.JavaCore;
    import org.eclipse.jdt.core.JavaModelException;
     
    import com.moow.animator.graphic.SvgAnimatableComponent;
     
    public class FindSymbolsHandler extends AbstractHandler {
     
     
    	public Object execute(ExecutionEvent event) throws ExecutionException {
    		Map<String, IType> subtypeListMap = new HashMap<String, IType>();
    		IJavaProject cobaye = null;
    		// Get the root of the workspace
    		IWorkspace workspace = ResourcesPlugin.getWorkspace();
    		IWorkspaceRoot root = workspace.getRoot();
    		// Get all projects in the workspace
    		IProject[] projects = root.getProjects();
    		// do not need all the project to search the workspace.
    		try {
    			for (IProject project : projects) {
    				// Check if we have a Java project
    				if (project.isNatureEnabled("org.eclipse.jdt.core.javanature")) {
    					cobaye = JavaCore.create(project);
    					IType baseType = cobaye.findType(SvgAnimatableComponent.class
    							.getName());
    					if (baseType!=null) {
    						ITypeHierarchy hierarchy = baseType
    								.newTypeHierarchy(new NullProgressMonitor());
    						IType[] allSubtypes = hierarchy.getAllSubtypes(baseType);
    						for (IType iType : allSubtypes) {
    							subtypeListMap.put(iType.getFullyQualifiedName(), iType);
    						}
    					}
    				}
    			}
    		} catch (JavaModelException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (CoreException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		System.out.println(subtypeListMap);
    		return subtypeListMap;
    	}
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/07/2011, 16h56
  2. [WDM12] utilisation hyperfile pour un projet mobile
    Par Nichiren dans le forum Windev Mobile
    Réponses: 1
    Dernier message: 09/06/2009, 11h55
  3. [Turbo Pascal] Peut-on utiliser GetPixel pour analyser une image sans l'afficher ?
    Par _Hope_ dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 01/01/2009, 22h07
  4. Extension pour analyser l'exécution d'un projet
    Par pilou0013 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 29/06/2006, 10h27
  5. [Debutant] probleme pour utiliser les classes d'un .jar
    Par pissek dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 12/05/2004, 18h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo