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

ANT Java Discussion :

Problème ant build.xml Java


Sujet :

ANT Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2
    Par défaut Problème ant build.xml Java
    Bonjour,

    Je suis débutante en JAVA et souhaiterais un petit coup de main pour faire mon build.xml (Je suis également nouvelle sur le forum )

    Je vous résume le problème lorsque je compile avec ant, le jar créé ne fonctionne pas et son contenu est différent du jar que me génére eclipse.

    Le .jar créé m'inclus tous les .jar des biblio utilisées ce que ne fait pas eclipse, puisqu'eclipse ne va chercher que les .class qui l'interesse dans les lib utilisées.

    Ci-dessous mon build.xml :
    Code XML : 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
    <?xml version="1.0"?>
     
    <project name="all" default="all" basedir=".">
     
        <property name="src.home" value="${basedir}/src" />
        <property name="lib.dir" value="${basedir}/lib" />
        <property name="build.home" value="${basedir}/build" />
        <property name="jar.file" value="xxxx.jar" />
        <property name="main.class" value="main.Main" />
     
        <property name="compile.debug" value="true" />
     
     
        <!--  targets -->
     
        <target name="all" depends="distclean, jar" description="Clean build, then create the jars" />
     
        <target name="build">
            <mkdir dir="${build.home}" />
            <javac srcdir="${src.home}" destdir="${build.home}"
                includeantruntime="false" debug="${compile.debug}">
                <classpath>
                    <fileset dir="${lib.dir}" includes="**/*.jar" />
                </classpath>
            </javac>
        </target>
     
        <target name="jar" depends="build" description="Create ${jar.file}">
            <jar destfile="${basedir}/${jar.file}" basedir="${build.home}">
                <fileset dir="${lib.dir}" includes="**/*.jar" />
                <manifest>
                    <attribute name="Main-Class" value="${main.class}" />
                </manifest>
            </jar>
        </target>
     
        <target name="clean">
            <delete dir="${build.home}" failonerror="false" />
        </target>
     <target name="distclean" depends="clean">
    	<delete file="${basedir}/${jar.file}" failonerror="false" />
        </target>
     
        <target name="doc">
            <echo message="toto" />
        </target>
     
    </project>
    Je craque meme apres avoir lu les differentes doc, je ne trouve pas le problème, comme ci les bibliotheques et les .class n'était finalement pas linké.

    Merci de votre aide.

    Helene

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Citation Envoyé par helene90 Voir le message
    Bonjour
    Je suis également nouvelle sur le forum
    Bonjour et bienvenue à toi.

    Citation Envoyé par helene90 Voir le message
    Je suis débutante en JAVA et souhaiterais un petit coup de main pour faire mon build.xml
    Pas de soucis, il s'agit bien d'un forum d’entraide.

    Citation Envoyé par helene90 Voir le message
    Je vous résume le problème lorsque je compile avec ant, le jar créé ne fonctionne pas
    Je ne dirais pas que les choses ne fonctionnent pas mais plutôt qu'elles ne fonctionnent pas comme tu l'attendrais.

    Citation Envoyé par helene90 Voir le message
    son contenu est différent du jar que me génére eclipse.
    Le .jar créé m'inclus tous les .jar des biblio utilisées ce que ne fait pas eclipse, puisqu'eclipse ne va chercher que les .class qui l'interesse dans les lib utilisées.
    A juste titre ! Il est fortement déconseillé de "désassembler" les librairies. Tu perds beaucoup d'information et notamment la provenance (éditeur, nom de la librairie, version utilisée). Et cela n'apporte rien.

    Citation Envoyé par helene90 Voir le message
    Je craque meme apres avoir lu les differentes doc, je ne trouve pas le problème, comme ci les bibliotheques et les .class n'était finalement pas linké.
    Il n'y a pas de link lors de la compilation en Java. Chaque ".class" peut être considéré comme une .dll/.so

    Tu devrais regarder du côté de la propriété "Class-Path" du Manifest : http://docs.oracle.com/javase/tutori...r/downman.html
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  3. #3
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Bonjour et Bienvenue par ici,

    Les jars ne doivent pas se trouver dans un autre jar pour pouvoir être utilisés ainsi.

    Tu as différents choix qui s'offrent à toi:

    - Soit tu inclus dans ton jar les .class contenus dans les autres jar: bof et tu risques de ne pas être très compatible avec les licences des librairies externes que tu utilises.
    Tu peux faire ça soit avec un plugin pour ant (One-Jar ou jarjar par exemple) soit manuellement en ajoutant des zipfileset à ta task ant qui crée ton jar.

    - Soit tu t'arranges pour distribuer ton jar et à coté les jars externes que tu utilises (NetBeans par exemple les copie dans un répertoire lib qui sera distribué en même temps que le jar de l'application.
    Les avantages:
    * plus de problème de licences
    * une nouvelle version de ton appli sans changement des dépendances c'est juste un petit jar à reprendre
    * on peut upgrader une librairie externe (si l'API ne change pas) sans tout recompiler

    Voilà,

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2
    Par défaut
    Merci pour vos reponses

    J'utilise un zipfileset pour tout mes .jar et ca marche, y'aurait il un moyen plus generale de generer mon .jar sans avoir a ecrire

    <zipfileset src="XXXX.jar">
    <zipfileset src="YYYY.jar">
    <zipfileset src="ZZZZ.jar">

    Merci.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par bulbo Voir le message
    Les jars ne doivent pas se trouver dans un autre jar pour pouvoir être utilisés ainsi.

    Tu as différents choix qui s'offrent à toi:
    Tu semble oublié l'option prise par eclipse: des jar dans le jar, avec un classloader maison pour gérer tout ça. Ca évite à la fois d'exploser les jar pour les recompacter ensemble après, et ça permet de garder fonctionnel les notions de service, licence, etc. Par contre, je suis étonné, il me semblait que ça devait être intégré dans java 7, mais aucune trace....

  6. #6
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Tu semble oublié l'option prise par eclipse: des jar dans le jar, avec un classloader maison pour gérer tout ça. Ca évite à la fois d'exploser les jar pour les recompacter ensemble après, et ça permet de garder fonctionnel les notions de service, licence, etc. Par contre, je suis étonné, il me semblait que ça devait être intégré dans java 7, mais aucune trace....
    Désolé je ne suis pas du tout l'actu Eclipse, je suis passé sur NetBeans il y a bien longtemps

    Dans tous les cas, j'aime pas trop l'approche du classloader dédié, même si le packaging est plus "propre", ya un coût en perfs et ça c'est bof bof, sans parler des possibles side effect suivant les frameworks embarqués etc etc..

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Le sides effects: pas convaicu: ce classloader étends urlclassloader, et apparait comme étant l'unique classloader existant auprès de l'application. Et pour les perfs.... Je vois pâs où serait la perte

    Me semblati d'ailleurs que netbeans avait un système similaire, vu leur tendance à faire les même choses entre eux deux

  8. #8
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    NetBeans colle toutes les dépendances externes dans un répertoire dist/lib à la compilation.

    Pour les performances, un-jarer les jars du jar principal puis un-jarer la classe que l'on veut charger, il y a des chances que ce soit plus long que la version ou on un-jar seulement une fois.

    Idem si on fait un getResource ou un getResourceAsStream, la recherche va être plus lente forcément.

    Autre point, quelle va être l'URL retournée par un getResource ? Pas sur que cela n'ai pas un impact sur le code qu'il faudrait écrire pour accéder à une telle ressource par son URL.

    Et finalement, dans le cadre d'une applet signée (ou jnlp), les jars internes seront ils considérés comme signés vu leur inclusion dans un jar signé, ou faudra t'il les signer avant leur inclusion ?

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  9. #9
    Membre Expert
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Inscrit en
    Juillet 2008
    Messages
    1 478
    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 478
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Tu semble oublié l'option prise par eclipse
    C'est pas Eclipse, c'est du OSGi avec des nested jars.
    C'est quand meme considere comme un truc un peu crade en general, a eviter autant que possible.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Heu non, y a pas d'OSGI impliqué quand tu fais "package required libraries into generated jar". Ou alors OSGi occupe maintenant moins de 10k et se cache vachement bien dans l'application générée. Ne pas confondre le jar généré par file -> export et l'architecture même d'eclipse ou des procjets basés sur eclipse rcp qui utilisent OSGi

  11. #11
    Membre Expert
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Inscrit en
    Juillet 2008
    Messages
    1 478
    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 478
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Ne pas confondre le jar généré par file -> export et l'architecture même d'eclipse ou des procjets basés sur eclipse rcp qui utilisent OSGi
    Deformation professionnelle

Discussions similaires

  1. Problème sur AS2/XML/Java
    Par Magnat dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 07/06/2009, 16h45
  2. [Ant] Build.xml personnalisé
    Par Invité(e) dans le forum ANT
    Réponses: 2
    Dernier message: 21/10/2008, 15h33
  3. [ANT] build.xml tout mes package sauf X
    Par grabriel dans le forum ANT
    Réponses: 2
    Dernier message: 02/04/2007, 12h37
  4. [Ant] comment faire un Ant (build.xml)
    Par mbouguerra dans le forum ANT
    Réponses: 13
    Dernier message: 18/01/2006, 22h10
  5. [Ant Eclipse] Import des librairies dans un build.xml
    Par Alwin dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 17/11/2004, 16h35

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