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 :

[Plugin] Erreur ClassNotFoundException


Sujet :

Eclipse Platform

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur étude et développement java
    Inscrit en
    Juin 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement java

    Informations forums :
    Inscription : Juin 2016
    Messages : 34
    Points : 17
    Points
    17
    Par défaut [Plugin] Erreur ClassNotFoundException
    Bonjour tout le monde,

    Je développe actuellement un plugin Eclipse qui met en oeuvre un client REST, permettant de télécharger des fichiers de configuration (.xml).

    J'ai dans un premier temps écrit mon client REST dans un main. J'ai lancé plusieurs fois ce programme et pas de souci, je récupère mes données dans un dossier zippé.

    J'ai ensuite supprimé ma méthode main et mis le code de mon client REST, dans une méthode downloadData() (toujours dans la même classe).

    Lorsque je lance mon projet plugin en Eclipse application, je lance mon IHM (contenant 2 boutons - 1 pour fermer la fenêtre, l'autre pour lancer le programme) je récupère quelques erreurs que je ne comprends absolument pas.

    Pour commencer, voici le code de mon client REST (j'ai volontairement enlevé l'URL du service REST pour le post):
    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
    package clientrest;
     
    import java.io.File;
     
    import javax.ws.rs.core.MediaType;
     
    import com.sun.jersey.api.client.Client;
    import com.sun.jersey.api.client.ClientResponse;
    import com.sun.jersey.api.client.WebResource;
     
    public class ClientRest {
     
        public static void downloadData(){
     
            try{
     
                Client client = Client.create();
     
                WebResource webResource = client.resource("URL DU REST SERVICE");
     
                ClientResponse response = webResource.type(MediaType.APPLICATION_OCTET_STREAM).get(ClientResponse.class);
     
                if (response.getStatus() != 200) {
                    throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
                }
     
                File output = response.getEntity(File.class);
                output.renameTo(new File("d:\\Profiles\\mra\\Desktop\\TestRCP\\conf.zip"));
                System.out.println(output.getPath());
                System.out.println("Output from Server .... \n");
     
            } catch(Exception e) {
     
                e.printStackTrace();
            }
        }
    }
    Voici une partie de mon code d'IHM:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    btnLaunch.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    progressBar.setVisible(true);
                    ClientRest.downloadData();
                    dispose();
                }
            });
    Et enfin l'erreur que je récupère:
    Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
    at com.sun.jersey.api.client.PartialRequestBuilder.type(PartialRequestBuilder.java:92)
    at com.sun.jersey.api.client.WebResource.type(WebResource.java:349)
    at clientrest.ClientRest.downloadData(ClientRest.java:29)
    at eclipsercp.editeurxml.menubarre.ihm.InterfaceDeLancement$2.actionPerformed(InterfaceDeLancement.java:149)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6525)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6290)
    at java.awt.Container.processEvent(Container.java:2234)
    at java.awt.Component.dispatchEventImpl(Component.java:4881)
    at java.awt.Container.dispatchEventImpl(Container.java:2292)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
    at java.awt.Container.dispatchEventImpl(Container.java:2278)
    at java.awt.Window.dispatchEventImpl(Window.java:2750)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
    Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: com.sun.ws.rs.ext.RuntimeDelegateImpl cannot be found by javax.ws.rs.jsr311-api_1.1.1
    at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:122)
    at javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:91)
    at javax.ws.rs.core.MediaType.<clinit>(MediaType.java:44)
    ... 40 more
    Caused by: java.lang.ClassNotFoundException: com.sun.ws.rs.ext.RuntimeDelegateImpl cannot be found by javax.ws.rs.jsr311-api_1.1.1
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:439)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:352)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:344)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at javax.ws.rs.ext.FactoryFinder.newInstance(FactoryFinder.java:62)
    at javax.ws.rs.ext.FactoryFinder.find(FactoryFinder.java:155)
    at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:105)
    ... 42 more
    Mon plugin contient les dependencies suivantes:
    org.eclipse.ui
    org.eclipse.core.runtime
    org.eclipse.jdt.core(3.11.2)
    org.eclipse.jdt.launching(3.8.0)
    org.eclipse.core.resources(3.10.1)
    org.apache.commins.loggins(1.1.1)
    ch.qos.logback.classic(1.0.7)
    javax.servlet(3.1.0)
    com.sun.jersey.client(1.19.0)
    com.sun.jersey.servlet(1.19.0)
    Je précise aussi que com.sun.jersey.client(1.19.0) contient bien javax.ws.rs.jsr211-api(1.1.1) (tout comme com.sun.jersey.servlet(1.19.0)) je ne l'ai donc pas ajouté dans les dependencies.

    Je ne comprends rien à cette erreur. Pourquoi lorsque je le lance dans un main cela fonctionne et pas lorsque je lance mon plugin dans un Eclipse ? Manquerait-il des jar ?
    Bref, je ne sais pas de quel coté chercher.

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,
    Citation Envoyé par Matthieu1 Voir le message
    Pourquoi lorsque je le lance dans un main cela fonctionne et pas lorsque je lance mon plugin dans un eclipse?? Manquerait-il des jar?
    Quand on a ce genre de problème, c'est qu'on a bien certains jars dans le "build path", ajoutés donc par le menu Build Path / Add to Build Path, ou dans l'onglet Properties / Java Build Path / Libraries, alors qu'ils ne sont pas présents dans le classpath du plug-in, paramétrable ici :
    Nom : Capture.JPG
Affichages : 347
Taille : 38,2 Ko

    Bon, tu dis avoir une dépendance de ton plug-in vers Jersey Client, à priori donc un plug-in, qui lui devrait avoir dans ce classpath les jars qui contiennent les classes qui ne sont pas trouvées. Comment fais-tu pour ton code "main" pour intégrer dans le classpath ces jars ? Sont-ils exportés par le plug-in Jersey Client, ou les as-tu importés dans le build path par Build Path / Add to Build Path ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur étude et développement java
    Inscrit en
    Juin 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement java

    Informations forums :
    Inscription : Juin 2016
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Dans le classPath du plug-in je ne vois aucun jar à ajouter
    Nom : screenshot_78.png
Affichages : 339
Taille : 102,0 Ko


    Cependant, je ne prenais pas le bon REST Service. J'ai donc changé mon code:
    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
     
    public static PlantsList getPlantsList(){
     
    		try{
     
    			URL url = new URL(ReadProperties.getPropertyValue("url.PlantsList"));
     
    			PlantsList plantsList = JAXB.unmarshal(url, PlantsList.class);
     
    			return plantsList;
     
    		} catch(Exception e) {
     
    			e.printStackTrace();
    			return null;
    		}
    	}
    Et depuis plus de soucis que se soit dans le main ou quand je lance mon plug-in en application eclipse.

    Par contre c'est normal que je ne vois pas de jar dans le "classPath" du "Runtime" du plug-in???

    Cordialement,

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Matthieu1 Voir le message
    Par contre c'est normal que je ne vois pas de jar dans le "classPath" du "Runtime" du plug-in???
    Si tu n'en utilises pas, oui. Les jars utilisés par les autres plug-in n'ont pas besoin d'être ajoutés dans le classpath d'un plug-in qui a une dépendance vers ces autres plug-in.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur étude et développement java
    Inscrit en
    Juin 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement java

    Informations forums :
    Inscription : Juin 2016
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    Re,

    Merci pour l'explication à bientôt

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

Discussions similaires

  1. [MySQL-5.1] Besoin d'aide sur une erreur de requête
    Par bpdelavega dans le forum Requêtes
    Réponses: 8
    Dernier message: 20/11/2013, 16h39
  2. Besoin d'aide sur une erreur javascript Uncaught Exception
    Par Jim_Nastiq dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/11/2007, 17h11
  3. Besoin d'aide sur une fonction
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/08/2005, 18h40
  4. Réponses: 1
    Dernier message: 03/08/2005, 12h41
  5. Besoin d'aide sur une requête (JOIN + COUNT ?)
    Par PanzerKunst dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2005, 11h29

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