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

avec Java Discussion :

Exception ClassNotFoundException mais classe présente


Sujet :

avec Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 179
    Points : 77
    Points
    77
    Par défaut Exception ClassNotFoundException mais classe présente
    Bonjour,

    j'ai cette exception quand j'essaie de déployer un EAR en local sur un serveur Glassfish 3.1 :

    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
     
    Infos: Portable JNDI names for EJB HelloWorldServiceBean : [java:global/EAR/EJB/HelloWorldServiceBean!org.test.HelloWorldService, java:global/EAR/EJB/HelloWorldServiceBean]
    Grave: ContainerBase.addChild: start: 
    org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException: java.lang.ClassNotFoundException: org.granite.config.GraniteConfigListener
    	at org.apache.catalina.core.StandardContext.start(StandardContext.java:5332)
    	at com.sun.enterprise.web.WebModule.start(WebModule.java:498)
    	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:917)
    	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:901)
    	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:733)
    	at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2000)
    	at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1651)
    	at com.sun.enterprise.web.WebApplication.start(WebApplication.java:109)
    	at org.glassfish.internal.data.EngineRef.start(EngineRef.java:130)
    	at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:269)
    	at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:294)
    	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:462)
    	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
    	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:382)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1064)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1244)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1232)
    	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:459)
    	at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:209)
    	at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168)
    	at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
    	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:238)
    	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
    	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
    	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
    	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
    	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    	at java.lang.Thread.run(Thread.java:722)
    Caused by: java.lang.IllegalArgumentException: java.lang.ClassNotFoundException: org.granite.config.GraniteConfigListener
    	at org.apache.catalina.core.StandardContext.addListener(StandardContext.java:2743)
    	at org.apache.catalina.core.StandardContext.addApplicationListener(StandardContext.java:1966)
    	at com.sun.enterprise.web.TomcatDeploymentConfig.configureApplicationListener(TomcatDeploymentConfig.java:235)
    	at com.sun.enterprise.web.TomcatDeploymentConfig.configureWebModule(TomcatDeploymentConfig.java:94)
    	at com.sun.enterprise.web.WebModuleContextConfig.start(WebModuleContextConfig.java:274)
    	at com.sun.enterprise.web.WebModuleContextConfig.lifecycleEvent(WebModuleContextConfig.java:172)
    	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:149)
    	at org.apache.catalina.core.StandardContext.start(StandardContext.java:5329)
    	... 38 more
    Caused by: java.lang.ClassNotFoundException: org.granite.config.GraniteConfigListener
    	at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1519)
    	at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1369)
    	at org.apache.catalina.core.StandardContext.loadListener(StandardContext.java:4806)
    	at com.sun.enterprise.web.WebModule.loadListener(WebModule.java:1599)
    	at org.apache.catalina.core.StandardContext.addListener(StandardContext.java:2740)
    	... 45 more
    Le hic, la fameuse classe org.granite.config.GraniteConfigListener est bien présente dans la WebApp elle même contenue dans mon EAR. Elle est importée via une "user library" que j'ai crée.

    Lorsque je fais un "CRTL+SHIFT+T" puis tape le nom de cette classe, je la trouve bien, mais je ne la trouve plus lorsque j'enlève ma librarie (comportement normal donc). Cette librairie est bien dans mon class path...

    Quelle peut être la raison de ce comportement ?

    Merci de votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Citation Envoyé par jecomprendsrien Voir le message
    Le hic, la fameuse classe org.granite.config.GraniteConfigListener est bien présente dans la WebApp elle même contenue dans mon EAR. Elle est importée via une "user library" que j'ai crée.

    Lorsque je fais un "CRTL+SHIFT+T" puis tape le nom de cette classe, je la trouve bien, mais je ne la trouve plus lorsque j'enlève ma librarie (comportement normal donc). Cette librairie est bien dans mon class path...
    Merci de votre aide
    Je soupçonne une confusion entre le build path (qui conditionne la visibilité des classes sous éclipse) et la configuration de déploiement. C'est à dire que tu n'as peut-être pas dit à Eclipse que la lib en question doit être envoyée sur le serveur d'appli...
    Si tu peux vérifier quels jars sont présents physiquement dans le serveur (ou vérifier le classpath du serveur, je sais que c'est possible sous JBOSS, mais je ne connais pas GlassFish) tu pourras en avoir le coeur net sur ce point.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 179
    Points : 77
    Points
    77
    Par défaut
    Merci de ta réponse

    Citation Envoyé par therwald Voir le message
    C'est à dire que tu n'as peut-être pas dit à Eclipse que la lib en question doit être envoyée sur le serveur d'appli...

    En effet, c'est sans doute cela. Je ne sais pas comment vérifier le classPath du serveur Glassfish (chui noob ) mais par contre je viens de me rendre compte que si j'exporte en WAR, je n'ai pas ma librairie dedans

    Je vais essayer de trouver comment exporter cette $^ù*"'=@# de librairie dans mon WAR pour que le déploiement s'effectue correctement.

    Merci de m'avoir mis sur la piste en tout cas

  4. #4
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    La manière la plus simple de faire en sorte qu'une librairie soit déployée dans le serveur d'application, c'est de la copier coller dans le dossier WEB-INF/lib.

    Il y a d'autres moyens mais à réserver à un usage plus avancé.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 179
    Points : 77
    Points
    77
    Par défaut
    Ah ok merci je vais tester. J'étais en train de regarder le "deployment assembly" d'eclipse mais j'arrivais pas à insérer mon JAR dans mon projet

    Mon projet JPA référence la librairie EclipseLink 2.3.0 - Indigo, j'aimerais faire pareil avec ma librairie Granite pour ma WebApp

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 179
    Points : 77
    Points
    77
    Par défaut
    C'est bon ca marche problème résolu

    Il suffit d'aller dans la rubrique Deployment Assembly de ma WebApp puis de faire add puis Java Build Path Entries et d'ajouter ma librairie utilisateur

    Merci encore à toi

  7. #7
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Cool! N'oublie pas de mettre le sujet en résolu.

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

Discussions similaires

  1. [Axis2] classe présente dans le AAR mais introuvable
    Par kurtcpp dans le forum Services Web
    Réponses: 0
    Dernier message: 29/06/2010, 17h46
  2. Réponses: 2
    Dernier message: 31/12/2008, 13h09
  3. Réponses: 1
    Dernier message: 14/01/2008, 17h41
  4. Utiliser des packages ou des classes présents sur le net
    Par lionrouge dans le forum Général Java
    Réponses: 2
    Dernier message: 27/09/2006, 06h09
  5. [VB 2005] Exception FileNotFound mais l'image s'imprime quand même??
    Par annedeblois dans le forum Windows Forms
    Réponses: 3
    Dernier message: 22/06/2006, 16h28

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