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

Eclipse Java Discussion :

Rendre une application Java exécutable


Sujet :

Eclipse Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut Rendre une application Java exécutable
    Bonjour,
    J'ai terminé mon application et je voudrais la rendre executable(pour ne pas avoir a transporter toute la plate forme eclipse et executer a chaque fois)
    Comment faire??
    Merci pour votre aide...

  2. #2
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Tu fais un jar de ton projet et tu le rend exécutable.
    Tout est dans la FAQ.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut
    Merci pour la réponse, j'ai vu les solutions, mais c'est pas evident car ça a très bien marché sur une autre application simple.
    Je m'explique ...
    j'ai fais une aplication et j'ai rajouté beaucoup de fichiers externes.jar(Propriétés->chemin de génération java->Bibliotheque->Ajouter des fichier jar externes)qui sont nécessaires pour l'application.
    Est ce que ça peu causer un probleme?

    j'ai essayé ça aussi :comment créer un jar executable
    http://java.developpez.com/faq/java/...on#creationJar
    dans le fichier il y a:
    Class-Path: .\archive1.jar .\archive2.jar
    archive1.jar et archive2.jar est ce qu'il faut que je les crée avant de creer mon application.jar definitive ?(je n'ai pas bien compris)

    j'ai lancer la commande jar dans la console; voici le résultat:

    C:\eclipse\Java\jdk1.5.0_11\bin>jar cvfm Proj.jar META-INF/MANIFEST.MF
    manifest ajouté

    C:\eclipse\Java\jdk1.5.0_11\bin>java -jar Proj.jar
    Exception in thread "main" java.lang.NoClassDefFoundError: Start

    et pourtant mon main se trouve dans paquet=>Frame.java
    que dois je mettre a la place de Main-Class: Start ?

    redonner moi svp les etapes a suivre.
    est ce que quelqu'un veut bien m'aider.
    Merci pour votre aide...

  4. #4
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Il faut remplacer les lignes que tu vois dans la FAQ ! Il s'agit d'un exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Main-Class: com.toto.package.TaClasseAToi
    Class-Path: .\archive1.jar .\archive2.jar
    Pour archive1.jar et archive2.jar c'est aussi un exemple de comment ajouter des liens vers les jars externes nécessaires à ton application.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  5. #5
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Pour ne pas te compliquer la vie à chaque fois que tu veux faire le jar, tu peux faire un script ant :
    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
    <?xml version="1.0"?>
    <project name="myfreetv" default="jar" basedir=".">
     
        <property name="project.name" value="myfreetv" />
        <property name="src" value="src/" />
        <property name="build" value="bin/" />
        <property name="dist" value="dist/" />
        <property name="lib" value="lib/" />
        <property name="main" value="net.sourceforge.myfreetv.view.MyFreeTV" />
     
        <target name="init">
            <mkdir dir="${build}" />
            <mkdir dir="${dist}" />
        </target>
     
        <target name="compile" description="Compile the project" depends="init">
            <javac fork="yes" srcdir="${src}" destdir="${build}" classpath="${lib}" />
        </target>
     
        <target name="jar" description="JARs the Task" depends="compile">
            <jar destfile="${dist}/${project.name}.jar" basedir="${build}" compress="true">
                <manifest>
                    <attribute name="Built-By" value="${user.name}" />
                    <attribute name="Main-Class" value="${main}" />
                    <attribute name="Class-path" value=". lib/Trendy_1.8.jar lib/jawin.jar lib/xpp3_min-1.1.3.4.O.jar lib/xstream-1.2.1.jar" />
                </manifest>
            </jar>
        </target>
     
    </project>
    Remplace simplement les valeurs (nom du projet, classpath, etc...) par tes valeurs à toi, ensuite ouvre la perspective ant dans eclipse, ajoute y ce fichier que tu nommes build.xml (de préférence).
    Et voilà maintenant tu peux jarer en 1 clic

  6. #6
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut
    Mon fichier MANIFEST.MF
    ------------------------
    Manifest-Version: 1.0
    Created-By: 1.4.1_01 (Sun Microsystems Inc.)
    Main-Class: paquet.Frame
    Class-Path: .\xmlParserAPIs.jar .\xml.jar etc...
    ------------------------

    Ma classe principale
    ------------------------
    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
     
    package paquet;
     
    import java.awt.Color;
    import javax.swing.JFrame;
    .....
     
    public class Frame extends JFrame {
    ....
     
       public static void main(String[] args) {
     
    		SwingUtilities.invokeLater(new Runnable() {
    			public void run() {
    				Frame thisClass = new Frame();
    				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    				thisClass.setVisible(true);
     
    			}
     
    		});
    	}
     
    ....
    ------------------------------------------------
    et voici l'arborescence
    projet
    paquet
    frame.java
    frame => la classe
    main
    ------------------------------------------------
    C:\eclipse\Java\jdk1.5.0_11\bin>jar cvfm Projet.jar META-INF/MANIFEST.MF
    =>Les paquets sont bien ajoutés

    mais quand je lance la commande suivante:
    C:\eclipse\Java\jdk1.5.0_11\bin>java -jar Projet.jar
    =>Exception in thread "main" java.lang.NoClassDefFoundError: paquet/Frame

    pourtant main est bien dans frame qui est dans paquet
    ça devient impossible
    Merci de revoir avec moi svp

  7. #7
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    A priori c'est l'arborescence qui est fausse. Il ne devrait pas y avoir de répertoire "projet" dans ton jar.
    Merci d'utiliser les balises code pour qu'on voit les indentations et le code correctement formaté.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  8. #8
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Je t'assure, ant c'est vraiment plus facile
    En voici un plus complet, ça te fait la compile le jar et la doc en 1 clic
    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
    <?xml version="1.0"?>
    <project name="ants" default="jar" basedir=".">
     
        <property name="project.name" value="ants" />
        <property name="src" value="src/" />
        <property name="build" value="bin/" />
        <property name="dist" value="dist/" />
        <property name="doc" value="doc/" />
        <property name="lib" value="lib/" />
        <property name="main" value="notyet" />
     
        <target name="clean" description="Clean the project">
            <delete dir="${build}" />
            <delete dir="${dist}" />
        	<delete dir="${doc}" />
        </target>
     
        <target name="init" description="Init the project">
            <mkdir dir="${build}" />
            <mkdir dir="${dist}" />
            <mkdir dir="${doc}" />
        </target>
     
        <target name="compile" description="Compile the project" depends="init">
            <javac fork="yes" srcdir="${src}" destdir="${build}" classpath="${lib}" />
        </target>
     
        <target name="jar" description="JARs the Task" depends="compile">
            <jar destfile="${dist}/${project.name}.jar" basedir="${build}" compress="true">
                <manifest>
                    <attribute name="Built-By" value="${user.name}" />
                    <attribute name="Main-Class" value="${main}" />
                    <attribute name="Class-path" value="." />
                </manifest>
            </jar>
        </target>
     
        <target name="javadoc" description="Javadoc" depends="compile">
            <javadoc sourcepath="${src}" packagenames="*" destdir="${doc}" charset="utf8" link="http://java.sun.com/javase/6/docs/api" />
        </target>
     
        <target name="all" description="All" depends="clean,jar,javadoc" />
     
    </project>

  9. #9
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut
    Merci pour le code

    Le resultat dans la console
    Buildfile: C:\eclipse\workspace\Project\build.xml
    init:
    [mkdir] Created dir: C:\eclipse\workspace\Project\bin
    [mkdir] Created dir: C:\eclipse\workspace\Project\dist
    [mkdir] Created dir: C:\eclipse\workspace\Project\doc
    compile:

    BUILD FAILED
    C:\eclipse\workspace\Project\build.xml:25: srcdir "C:\eclipse\workspace\Project\src" does not exist!

    Total time: 5 seconds
    Ligne:25
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <javac fork="yes" srcdir="${src}" destdir="${build}" classpath="${lib}" />

  10. #10
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    C'est parce que tes sources ne sont pas dans le sous-répertoire src
    (moi je crée toujours un répertoire src ou je mets les sources).

    Change juste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <property name="src" value="src/" />
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <property name="src" value="./" />
    Ou alors sous eclipse change ton répertoire de sources (c'est plus propre quand même).

  11. #11
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut
    Merci pour la réponse.
    c'est bon le projet est bien jaré
    Buildfile: C:\eclipse\workspace\Project\build.xml
    init:
    compile:
    jar:
    [jar] Building jar: C:\eclipse\workspace\Project\dist\Project.jar
    BUILD SUCCESSFUL
    Total time: 10 seconds
    Quand je clique sur le Projet.jar
    Message d'erreur:
    Java Virtual Machine Launcher
    Could not find the main class. program will exit

    Est ce que c'est encore main qui me crée des problèmes
    projet -> paquet -> frame.java -> frame.classe -> main

    Merci de m'expliquer

  12. #12
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <property name="main" value="notyet" />
    remplace le notyet (qui veut dire "pas encore (défini)") par le nom de ta classe main (par exemple tonpackage.TaClasseMain).

  13. #13
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut
    Merci pour la reponse
    Oui je l'avais déja remplacer avec tous ce qu'il falait changer.
    Je vous ferai part dès que que j'aurais trouver d'où vient le probleme.
    Merci.

  14. #14
    Membre averti
    Avatar de Pierre8r
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 518
    Points : 341
    Points
    341
    Par défaut
    Bonjour kiminfor,

    Premièrement :
    Dès que tu as réussi à créer un fichier jar, et s'il y a une erreur lorsque tu double-clique dessus, ne pas hésiter à décompresser ce fichier jar.
    En décompressant ce fichier jar ( avec un dézippeur ) tu vas pouvoir vérifier ce qu'il y a réellement dedans.
    Un jar executable, ce n'est qu'un fichier archive dans lequel sont archivés des fichiers *.class entre autre.

    Tintin92

Discussions similaires

  1. Réponses: 10
    Dernier message: 02/09/2014, 10h56
  2. Réponses: 1
    Dernier message: 17/12/2013, 11h31
  3. Rendre une application Java exécutable
    Par kortobi dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 22/03/2013, 12h34
  4. Réponses: 0
    Dernier message: 27/12/2007, 17h48
  5. Comment exécuter une application java comme un batch C ?
    Par gillin dans le forum Général Java
    Réponses: 7
    Dernier message: 09/02/2007, 14h59

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