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

Format d'échange (XML, JSON...) Java Discussion :

Compiler un .jar "runnable" en passant par build.xml


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 84
    Points : 69
    Points
    69
    Par défaut Compiler un .jar "runnable" en passant par build.xml
    Bonjour,

    Lorsque j'essaye d'exécuter mon build.xml avec Ant il me compile un .jar mais lorsque je veux l'executer j'ai un NoClassDefFoundError qui apparait.

    Donc mes librairies ne sont pas inclues... Je ne vois pas trop comment faire, j'ai trouvé plusieurs truc sur le web mais la je commence a tourner en rond

    Mon code est le suivant :

    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
    <project name="SQLDataExport" basedir="." default="main">
     
        <property name="src.dir"     value="src"/>
     
        <property name="build.dir"   value="build"/>
        <property name="classes.dir" value="classes"/>
        <property name="jar.dir"     value="${build.dir}\jar"/>
        <property name="main-class"  value="export.MainClass"/>
    	<property name="lib.dir"     value="lib"/>
     
        <target name="clean">
            <delete dir="${build.dir}"/>
        </target>
     
        <target name="compile" depends="clean">
            <mkdir dir="${classes.dir}"/>
        	<javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true" >
        		<!-- <classpath refid="compile.classpath"/> -->
        	</javac>
        </target>
     
        <target name="jar" depends="compile">
        	<mkdir dir="${jar.dir}"/>
            <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
            	<fileset dir="${lib.dir}" includes="*.jar"/>
                <manifest>
                    <attribute name="Class-Path" value="${lib.dir}"/>
                    <attribute name="Main-Class" value="${main-class}"/>
                </manifest>
            </jar>
        </target>
     
        <target name="run" depends="jar">
        	<java jar="${jar.dir}/${ant.project.name}.jar" fork="true">
     
        	</java>
        </target>
     
        <target name="clean-build" depends="clean,jar"/>
     
        <target name="main" depends="clean,run"/>
     
    </project>
    Une idée ?

    Merci beaucoup !

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 127
    Points : 208
    Points
    208
    Par défaut
    Bonjour,

    Le problème ne vient pas réellement due ant, mais que tu essaye d'inclure des jars dans ton jar exécutable.
    Tu veux faire la même chose que sur cette discussion :
    http://www.developpez.net/forums/d30...a/jar-jar-jar/

    Comme dit dans cette discussion, ce mécanisme n'est pas celui qui est traditionnellement utilisé en java.

    Si tu veux distribuer ton application d'une manière simple et en utilisant ant et un jar d'installation, tu peux faire la chose suivante :

    Créer le jar qui ne contient que tes classes et fichiers de ressources, puis par une tâche ant supplémentaire "packager" par exemple, créer un zip ou un jar qui contient le jar et un répertoire lib avec les librairies nécessaires.

    L'utilisateur n'aura qu'à extraire les fichiers sur un répertoire, et la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -jar SQLDataExport.jar
    va marcher.

    Si tu veux pousser plus loin tu peut faire un jar qui s'auto-extrait en rendant le jar d'installation exécutable java et en incluant une classe qui effectue le "déploiement de l'appli.

    Maintenant, si tu tiens vraiment à faire ton idée de départ, tu peux consulter l'article cité dans la discussion :
    http://www.ibm.com/developerworks/ja...rary/j-onejar/ et bon courage !

    Cordialement

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 84
    Points : 69
    Points
    69
    Par défaut
    Ok merci pour ta réponse ! Je vais spécifier les path dans mon manifest

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

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