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 :

Intégration d'une API


Sujet :

avec Java

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 133
    Points : 109
    Points
    109
    Par défaut Intégration d'une API
    Voilà, pour la première fois j'essaye d'intégrer une API dans un de mes projets.
    Et c'est JCalendar, que l'on peut trouver sur ce site : http://www.toedter.com/

    Mais voilà notre prof nous impose de ne pas utiliser ANT et de faire notre projet avec MAVEN.
    C'est la première fois que je vois ce genre de projet, et nous n'avons eu aucune formation ou autre sur le sujet.

    J'ai donc essayé d'intégrer cette API dans mon application en rajoutant quelques lignes dans mon pom.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            <dependency>
                <groupId>jcalendar</groupId>
                <artifactId>jcalendar</artifactId>
                <version>1.7.4</version>
                <scope>system</scope>
                <systemPath>${basedir}src/lib/jcalendar.jar</systemPath>
                <type>jar</type>
            </dependency>
    Cependant, après quand j'essaye de réaliser "import jcalendar.XXX;" une erreur survient comme s'il ne connaissait pas le .jar que je viens d'importer.

    Il y a sûrement une erreur mais je ne m'y connais pas assez pour la débusquer.


    Merci d'avance,

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Quel IDE tu utilises? Si tu utilises Eclipse et tu as installé le plugin pour maven, click droite sur le projet et dans le menu de maven, converti le en projet maven. Ensuite vérifie dans le buidpath de ton projet si les dépendances maven sont bien importées dans le projet.
    Attention le scope du librairie pour ton déploiement:
    system
    This scope is similar to provided except that you have to provide the JAR which contains it explicitly. The artifact is always available and is not looked up in a repository.
    A+.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 133
    Points : 109
    Points
    109
    Par défaut
    Je suis sous NetBeans malheureusement

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Vérifie mais je suis sûr qu'il y des trucs du même genre sur NetBeans.

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 133
    Points : 109
    Points
    109
    Par défaut
    C'est un projet MAVEN natif donc tout a bien été fait quand il a été créé . Et puis j'ai une dependencies pour JUnit et il est reconnu donc je comprend pas !

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Il y a de fortes chances que JUnit était déjà installé avant que tu commences à travailler.

    Est-ce le cas de jcalendar ? Le fichier ${basedir}src/lib/jcalendar.jar existe-t-il vraiment ?
    En principe avec Maven on utilise presque jamais le <scope>system</scope> et la balise <systemPath>.

    C'est une chose de le faire avec JUnit, ça permet d'éviter que tout le monde le retélécharge et le mette à droite à gauche. Mais les bibliothèques que tu ajoutes toi-même ne devraient pas faire ça.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 133
    Points : 109
    Points
    109
    Par défaut
    Bah comment faire alors ? J'ai vu que pour ajouter des librairies sur un projet non MAVEN il faut juste faire un Clic Droit sur le projet et ajouter une librairies ! Mais la c'est différent ! Comme t faire pour ajouter une librairie ?

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Je te l'ai dit : scope autre chose que system, et pas de systemPath. Il faut laisser Maven se charger de l'installation automatique.

    Citation Envoyé par thelvin Voir le message
    Est-ce le cas de jcalendar ? Le fichier ${basedir}src/lib/jcalendar.jar existe-t-il vraiment ?
    Ces choses que j'avais écrites sont ce qu'on appelle des questions. Le principe d'une question est d'en obtenir des réponses.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 133
    Points : 109
    Points
    109
    Par défaut
    Bien sûr que oui qu'il existe ce fichier cet endroit là !
    Mais si je ne lui fournit pas de path comment va t il faire l'installation automatique ?

  10. #10
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 8
    Points : 11
    Points
    11
    Par défaut
    Si t'as déjà défini un settings.xml pour les path que Maven va utiliser pour télécharger les jars c'est OK, si non il faut lui indiquer le path sur les dependencies.

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 133
    Points : 109
    Points
    109
    Par défaut
    Quelqu'un peut me donner le modèle de la dependencies que je dois écrire ? Et non je n'ai pas de settings.xml

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Il faut toujours autant que possible passer par le repository maven.


    Si tu n'est pas regardant à la version de jcalendar, ceci devrait suffire:

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <dependency>
    	<groupId>com.toedter</groupId>
    	<artifactId>jcalendar</artifactId>
    	<version>1.3.2</version>
    </dependency>
    Et ça sera téléchargé sur les repos officiels.

    Si tu veux absolument la version 1.7.4, tu va devoir mettre ceci:

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <dependency>
    	<groupId>com.toedter</groupId>
    	<artifactId>jcalendar</artifactId>
    	<version>1.7.4</version>
    </dependency>

    et, comme il n'y a pas de repository officiel avec cette version, en ligne de commande sur la machine de compilation, taper

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mvn install:install-file -Dfile=/chemin/vers/ton/jcalendar.jar -DgroupId=com.toedter -DartifactId=jcalendar -Dversion=1.7.4 -Dpackaging=jar
    Pour le mettre en place dans le repository. La partie chiant c'est que ton prof devra faire de même mais... hé il sait comment utiliser maven, non?

    http://maven.apache.org/guides/mini/...ars-local.html

  13. #13
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Pour expliquer rapidement, Neewd, ce qu'il faut comprendre, c'est que Maven incorpore un outil de résolution de dépendance qui s'appuie sur un référentiel où beaucoup de libs et d'apis sont centralisées.

    L'url de ce repo central (que tu peux parcourir) est là : http://search.maven.org/#browse|47

    A côte de ce repo central, tu as un repo local qui est sur ton poste, le chemin de ce repo local est précisé dans la config de maven (settings.xml).

    Ainsi, dès lors que tu lui demande un lib particulière d'une version particulière (identifié grâce aux group id, artifact id et version), Maven va d'abord regarder dans ton repo local s'il trouve cette lib à la version voulue. Si ce n'est pas le cas, il va alors aller la chercher sur le repo central et s'il la trouve la copier dans ton repo local ce qui évite d'avoir à la retélécharger plus tard.

    Le problème, c'est quand la dépendance voulue n'est pas dispo sur le repo central, ce qui est la cas de la lib que tu veux utiliser (du moins, il n'y a pas la version que tu veux sur le repo central). Sachant que tu as la lib, tu peux faire en sorte de la rendre disponible sur le repo local (sur lequel tu as tout contrôle contrairement au repo central), là il faut utiliser la manip indiquée par tchize_.

    La solution à base de scope system est très particulière et réservées à certains cas (perso j'ai jamis eu à l'utiliser), il faut comme tchize_ l'a dit privilégier la solution repository.

    Sinon, pour en apprendre plus sur les possibilités de Maven, qui vont bien au delà de la résolution de dépendances, je te suggère d'aller regarder le guide complet disponible en Français ou en VO.

    En espérant que cela t'éclaire un peu plus.

    -"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
    -"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".

    Pieds d'argile (1996), Terry Pratchett 1948 - 2015
    (trad. Patrick Couton)

  14. #14
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 133
    Points : 109
    Points
    109
    Par défaut
    Merci à tous pour vos réponses,

    J'ai parcouru le repo central et j'ai trouvé la version de tchize_ , étant le 1.3.2, j'ai donc décider de ne pas me prendre la tête et installer cette version.

    J'ai insérer les lignes en rapport avec le groupId et l'artefactId du repo central.
    (Etant sur un SVN) J'ai ensuite commit mon projet afin qu'il reconnaisse la nouvelle librairie, du moins qu'il la télécharge.
    Et j'ai encore une erreur sur mon projet :



    J'ai donc essayé d'installer manuellement l'artefact.


    Mais j'ai un message d'erreur :



    Je pense que c'est à cause du réseau sur lequel je suis (réseau WiFi de l'université) je testerais ce soir.

    Sauf si c'est encore autre chose

  15. #15
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par Neewd Voir le message

    Mais j'ai un message d'erreur :
    Ce serait bien d'avoir un copier / coller plutot que juste un screenshot de la fin.
    Je pense que c'est à cause du réseau sur lequel je suis (réseau WiFi de l'université) je testerais ce soir.

    Sauf si c'est encore autre chose
    C'est sur que si ton réseau wifi n'a pas accès au net, maven ne marchera pas

  16. #16
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 133
    Points : 109
    Points
    109
    Par défaut
    EDIT : J'ai vu que je devais "Build" mon projet pour que les dépendances se téléchargent.

    Mais j'ai cette erreur là
    ------------------------------------------------------------------------
    Building POOAv 1.0-SNAPSHOT
    ------------------------------------------------------------------------
    The POM for org.apache.maven.plugins:maven-install-plugin:jar:2.3.1 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
    ------------------------------------------------------------------------
    BUILD FAILURE
    ------------------------------------------------------------------------
    Total time: 0.360s
    Finished at: Wed Jan 23 15:58:30 CET 2013
    Final Memory: 5M/114M
    ------------------------------------------------------------------------
    Failed to parse plugin descriptor for org.apache.maven.plugins:maven-install-plugin:2.3.1 (C:\Users\Clément\.m2\repository\org\apache\maven\plugins\maven-install-plugin\2.3.1\maven-install-plugin-2.3.1.jar): error in opening zip file -> [Help 1]

    To see the full stack trace of the errors, re-run Maven with the -e switch.
    Re-run Maven using the -X switch to enable full debug logging.

    For more information about the errors and possible solutions, please read the following articles:
    [Help 1] http://cwiki.apache.org/confluence/d...rsingException

  17. #17
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Mademoiselle () Clément,

    visiblement, tu as un fichier corrompu dans ton repository.

    Efface le dossier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Clément\.m2\repository\org\apache\maven\plugins\maven-install-plugin\2.3.1
    et relance maven, ça devrait résoudre le problème

  18. #18
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 133
    Points : 109
    Points
    109
    Par défaut
    Oui j'me suis toujours dis qu'il fallait que je change, et j'ai toujours repoussé, c'est ainsi fait.

    J'ai supprimé le dossier et relancé mon NetBeans, j'ai build mon projet sans souci

    Maintenant quand j'essaye d'insérer la ligne Il le détecte encore comme une erreur, il faut que je regarde la documentation pour voir les imports à réaliser.

    EDIT : Il suffit simplement de reprendre les noms de dossiers de la librairie et ça fonctionne, merci tout le monde pour votre grande aide.

Discussions similaires

  1. [Web Service] Intégration d'une API pour site de crowdfunding
    Par pookies dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 04/06/2015, 10h00
  2. Réponses: 0
    Dernier message: 18/01/2015, 23h23
  3. Intégration d'une API dans un programme C#
    Par greg_cedepe dans le forum C#
    Réponses: 6
    Dernier message: 11/04/2008, 18h26

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