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

Wildfly/JBoss Java Discussion :

[ JBoss ][ JFreeChart ]Ajouter une librairie externe au .jar


Sujet :

Wildfly/JBoss Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 48
    Points : 36
    Points
    36
    Par défaut [ JBoss ][ JFreeChart ]Ajouter une librairie externe au .jar
    Bonjour à tous,

    J'utilise Eclipse pour développez une application J2EE déployée sous JBoss 4.0. J'utilise au sein de mon programme l'API JFreeChart.
    J'ai ajouté les librairies nécessaires (.jar) au CLASSPATH et les ai inclus à l'aide d'Eclipse à mon projet (propriété du projet,add external jar,...).
    Tout ce passe bien à la compilation mais lorsque je déploie le .jar de mon projet sous JBoss, j'obtient les erreurs suivantes:
    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
    11:06:07,850 WARN  [EJBDeployer] Verify failed; continuing
    java.lang.NoClassDefFoundError: org/jfree/data/time/RegularTimePeriod
    	at java.lang.Class.getDeclaredMethods0(Native Method)
    	at java.lang.Class.privateGetDeclaredMethods(Class.java:1655)
    	at java.lang.Class.privateGetPublicMethods(Class.java:1778)
    	at java.lang.Class.getMethods(Class.java:832)
    	at org.jboss.verifier.strategy.AbstractVerifier.hasEJBCreateMethod(AbstractVerifier.java:664)
    	at org.jboss.verifier.strategy.EJBVerifier20.verifySessionBean(EJBVerifier20.java:834)
    	at org.jboss.verifier.strategy.EJBVerifier20.checkSession(EJBVerifier20.java:64)
    	at org.jboss.verifier.BeanVerifier.verify(BeanVerifier.java:166)
    	at org.jboss.ejb.EJBDeployer.create(EJBDeployer.java:537)
    	at org.jboss.deployment.MainDeployer.create(MainDeployer.java:918)
    	at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:774)
    	at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:738)
    	at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:324)
    	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
    	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
    	at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:121)
    	at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
    	at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
    	at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
    	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
    	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
    	at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
    	at $Proxy8.deploy(Unknown Source)
    	at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:325)
    	at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:501)
    	at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:204)
    	at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:215)
    	at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:194)
    11:06:07,897 ERROR [MainDeployer] could not create deployment: file:/C:/Java/jboss-4.0.2/server/default/deploy/PlansActionsEJB.jar/
    org.jboss.deployment.DeploymentException: Verification of Enterprise Beans failed, see above for error messages.
    	at org.jboss.ejb.EJBDeployer.create(EJBDeployer.java:553)
    	at org.jboss.deployment.MainDeployer.create(MainDeployer.java:918)
    	at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:774)
    	at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:738)
    	at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:324)
    	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
    	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
    	at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:121)
    	at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
    	at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
    	at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
    	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
    	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
    	at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
    	at $Proxy8.deploy(Unknown Source)
    	at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:325)
    	at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:501)
    	at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:204)
    	at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:215)
    	at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:194)
    J'utilise le plugin MyEclipse et le c'est lui qui crée le .jar et le deploie.
    J'ai vérifié et les librairies JFreeChart ne sont pas présente dans le .jar déployé.
    Quelqu'un aurait-il une idée de l'endroit où ajouter les librairies JFreeChart dans les répertoires JBoss? ou en général toutes libraires externes sous JBoss.

    Merci d'avance pour vos réponses.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Points : 20
    Points
    20
    Par défaut
    c 'est un projet ejb ?
    si oui vérifie :

    1- si tes classes qui utilisent ce jar sont dans le war ,
    alors fais attention qu'elles ne soient pas déployées dans l'ear aussi ( à cause de la hiérarchie du chargement des classes) .

    tu déplois via un fichier ant?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 48
    Points : 36
    Points
    36
    Par défaut
    Merci pour ta réponse.

    Oui c'est un projet EJB. Mais je n'ai pas de .war ni de .ear.

    J'utilise le plugin myEclipse et je déploie mon projet à l'aide de celui-ci (simple bouton dans un menu). Il crée un dossier .jar et va le copier dans le dossier server\default\deploy de JBoss.
    Avant d'inclure des traitements utilisant l'API JFreeChart le déploiement se passait correctement et je pouvais accéder à mes EJB sans problèmes.

    Comment faire dans ce cas précis? Est-il nécessaire de créer un .ear contenant le .jar de mon projet et ceux de l'API utilisée?
    Ou peut-être faut-il que j'ajoute les .jar de l'API dans un répertoire précis, par exemple un répertoire créé dans le .jar de mon projet ou un répertoire de JBoss?
    Comme vous pouvez le constater je suis débutant dans le domaine...

    Merci à tous pour votre aide.

  4. #4
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Je ne connais pas JBoss mais comme il n'y a pas beaucoup de monde qui répond à ta question, je vais essayer de t'aider.
    J'utilise JFreeChart sous Jonas et pour que ça fonctionne, j'ai copié le jar sous un répertoire qui s'appelle lib/ext.
    Regarde s'il en existe un qui s'appelle comme ça sous JBoss, on ne sait jamais.
    Modératrice Java - Struts, Servlets/JSP, ...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Points : 20
    Points
    20
    Par défaut
    **********
    Notes: d'après mon expérience sous JOnAs : projet ear = seulement ejb .

    si tu ajoutes d'autes classes, ca devient WAr( application web) + Jar( pour tes ejb) .

    et Ear = Jar+ WAr.

    http://jonas.objectweb.org/current/doc/PG_J2eeApps.html#PG_J2eeApps-ClassLoader




    *****************
    en fait ca pourrait venir de l'ordre des chargements des classes( je viens d'avoir un problème similaire) :

    java.lang.NoClassDefFoundError.

    en fait avec un projet contenant des EJB :

    Eclipse contient une version de ant (pour compiler) .

    donc sous éclipse la compilation se passe bien .

    après éclipse prends tes classes compilées et les met dans les archives WAr et Jar (pour les ejb) qui forment un EAR.

    Si ton projet a un fichier build.xml :

    si tes classes sont exportées sont dans l'ear , le classpath est lié au war donc la première classe appelée sera celle de l'ear donc il ne connait ta librarie jar.

    il faut que tu ajoutes ta librairie comme variable et que tu mettes le jar cur el serveur , le lien sera (JBOSS_Root)/lib ou quelque chose comme ca, comme l'a suggéré c_nvy






    [img][/img]

  6. #6
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 48
    Points : 36
    Points
    36
    Par défaut
    Merci à vous 2 pour vos réponses.

    Grace à vos précisions j'ai résolu le problème:

    J'ai ajouter les .jar de l'API dans le répertoire JBOSS_HOME\server\default\lib et modifier le CLASSPATH en spécifiant les nouveaux chemins vers ces fichiers.

    J'ai également modifier le fichier MANIFEST.MF pour obtenir ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Manifest-Version: 1.0
    Class-Path: 
    Bundle-ClassPath: lib/gnujaxp.jar,
     lib/jcommon-1.0.0.jar,
     lib/jfreechart-1.0.1.jar,
     lib/junit.jar,
     lib/servlet.jar
    Le déploiement se passe à présent sans soucis. Plus qu'à tester!

    Encore merci pour votre aide .

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

Discussions similaires

  1. [2.x] Ajouter une librairie externe (API Sellsy) à Silex
    Par dhallennem dans le forum Symfony
    Réponses: 5
    Dernier message: 22/10/2015, 17h13
  2. Ajouter une librairie .jar en netbeans
    Par laziolb dans le forum NetBeans Platform
    Réponses: 2
    Dernier message: 05/05/2010, 11h20
  3. Ajouter des librairies externes à une appli GWT
    Par neerou dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 20/10/2009, 13h36
  4. [Debutant] Ajout de librairie externe
    Par hat54 dans le forum MFC
    Réponses: 2
    Dernier message: 26/04/2004, 17h15
  5. Creer et utiliser une librairie externe à l'exécutable
    Par multani dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 06/11/2003, 10h11

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