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

NetBeans Java Discussion :

générer le manifest.mf automatiquement


Sujet :

NetBeans Java

  1. #1
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut générer le manifest.mf automatiquement
    Bonjour,

    aujourd'hui pour lancer mon application java, j'ai un .cmd qui contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SET REP_CONF="D:\REP_CONF"
     
    java -cp .;%REP_CONF%;monapplli.jar;ant.jar;basisjdbc.jar;log4j-1.2.13.jar;forms-1.0.7.jar;looks-2.0.3.jar-Xmx512m -Xms512m -XX:MaxNewSize=128m com.totoche.projet.monAppli 2>monAppli.log 1>&2
    J'aimerai créer un jar executable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -jar monappli.jar
    Si j'ai bien compris , pour cela il faut que mon fichier manifest.mf contienne le nom de la classe à exécuter ainsi que les archives à mettre dans le CLASSPATH. Or après un build main project (F11) mon fichier manifest.mf est tjs de la forme :
    Manifest-Version: 1.0
    X-COMMENT: Main-Class will be added automatically by build


    Faut-il modifier le script ant build-impl.xml ?


    ps :
    manifest.mf est à la racine de l'application
    merci de votre aide
    La patience est un arbre aux racines amères, mais aux fruits ci-doux.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Si tu utilises un script Ant pour générer ton jar, alors tu peux soit lui dire de recalculer à chaque fois le manifest.mf, soit construire une fois pour toute ton fichier et le dire à Ant. Regarde la documentation de la tache Jar, particulièrement les exemples.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut
    Merci,

    voici ce que j'ai fais
    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
     
      <target name="-pre-jar">
          <!-- JAR executable -->
          <manifest file="MANIFEST.MF">
            <attribute name="Built-By" value="${user.name}"/>
            <attribute name="Main-Class" value="com.totoche.projet.moaAppli"/>
            <attribute name="Implementation-Version" 
                     value="${version.num}-b${build.number}"/>         
        </manifest>
     
          <jar destfile="testAntTotoche.jar"
               basedir="${build.classes.dir}"
               includes="**/*.class"
               manifest="MANIFEST.MF"
               />
        </target>
    Mon probleme est d'inserer les jar contenu dans le repertoire lib
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    include???
                <fileset dir="$dist.dir}/lib">
                    <include name="**/*"/>
                </fileset>
    Une solution serai de copier dir="${dist.dir}/lib" dans ${build.classes.dir}" provisoirement non ?

    Merci de ton aide
    La patience est un arbre aux racines amères, mais aux fruits ci-doux.

  4. #4
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Si on utilise un IDE c'est géneralement pour ne pas avoir à bidouiller les scripts ant ^^.
    Avec NetBeans tu n'as pas à toucher aux scripts ant ou au manifest qui est auto-généré.

    Pour indiquer la Main Class d'un projet Java avec NetBeans il faut aller dans les propriétés du projet (clic droit -> "Properties"). Dans la boite de dialogue qui apparaît sélectionner la catégorie "Run" dans le panel de gauche puis indiquer les options voulues dans le panel de droite (Main Class, Arguments, Working Directory, VM Options, ...).

    Plus d'infos dans la FAQ NetBeans avec notamment les entrées sur la Configuration des Projets Standards .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  5. #5
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut
    Bonjour, merci

    le Main Class du projet est bien à jour
    Pour indiquer la Main Class d'un projet Java avec NetBeans il faut aller dans les propriétés du projet (clic droit -> "Properties"). Dans la boite de dialogue qui apparaît sélectionner la catégorie "Run"
    ok

    mon probleme c'est que le manifest n' est auto-généré
    La patience est un arbre aux racines amères, mais aux fruits ci-doux.

  6. #6
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Citation Envoyé par totoche Voir le message
    mon probleme c'est que le manifest n' est auto-généré
    En es tu bien sûr ?
    Le manifest généré par NetBeans n'est pas mis dans le répertoire de ton projet et n'est pas directement accessible. C'est lorsque tu vas builder ton projet que NetBeans l'intègre directement dans le jar.
    Tu as bien vérifier dans le jar et tu n'as pas l'entrée "META-INF/MANIFEST.MF" ?
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  7. #7
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut
    En effet tu as raison, le manifest.mf est bien généré.

    Cependant si je veux externaliser mon fichier propertie (hors du jar) comment dois-je ecrire ma ligne de commande ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /*properties dans le jar ok*/
    java -jar monAppli.jar
     
    /*properties hors jar Nok*/
    SET PROP="C:\tmp\tst"
    java ????
    Merci de ton aide
    La patience est un arbre aux racines amères, mais aux fruits ci-doux.

  8. #8
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Qu'est ce que tu entends par externaliser ton fichier properties ?
    Je n'ai pas bien compris ce que tu voulais faire, tu veux passer un paramètre à ton application ?
    java -jar monAppli.jar param1 param2 ...
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  9. #9
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut
    Bonjour
    Mon fichier properties n'est pas dans le même répertoire que le .jar
    La patience est un arbre aux racines amères, mais aux fruits ci-doux.

  10. #10
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Mais il correspond à quoi ton fichier properties ? Tu veux en faire quoi ?
    Explique ce que tu veux faire.
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  11. #11
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut
    J'hérite d'une situation dans laquelle il est demandé que le fichier properties soit "mutualisé" pour les différents utilisateurs qui ont l'application installée sur leur machine.
    Ce fichier contient entre autre l'adresse des serveurs FTP
    La patience est un arbre aux racines amères, mais aux fruits ci-doux.

  12. #12
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Ok donc en gros c'est un fichier de config que ton application doit lire et tu veux lui indiquer le chemin vers ce fichier, c'est bien ça ?

    Dans ce cas il te suffit de passer le chemin en paramètre de l'appel de ton application comme je te l'ai indiqué précédemment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -jar monAppli.jar chemin/fichier.properties
    et tu récupères le paramètre dans ton application :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public static void main(String... args) {
        if(args.length < 1) {
            System.out.println("Please specify the configuration file path");
            System.exit(1);
        }
        String filePath = args[0];
        File file = new File(filePath);
        if(! file.isFile()) {
            System.err.println("invalid file");
            System.exit(1);
        }
     
        // read file
    }
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  13. #13
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut
    Merci pour tes précieux eclairssicements

    Je me heurte malheureusement a un petit probleme, car j'utilise la classe ResourceBundle...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResourceBundle.getBundle(baseName)
    La méthode loadBundle ne me charge pas le bundle
    Load a bundle through either the specified ClassLoader,
    Le fait de le passer en parmetre, hors du champ du classpath, n'est-ce pas la raison de mon probleme
    La patience est un arbre aux racines amères, mais aux fruits ci-doux.

  14. #14
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Puisque c'est un fichier properties tu peux utiliser la classe PropertyResourceBundle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ResourceBundle propertiesResources = null;
    FileReader fileReader = new FileReader(filePath);
    try {
        propertiesResources = new PropertyResourceBundle(fileReader);
    } finally {
        fileReader.close();
    }
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  15. #15
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Ou pour quelque chose de plus propre tu peux définir un ClassLoader spécifique pour chercher les ressources sur le système de fichier s'il ne les trouve pas dans le classpath.

    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
    public class FileClassLoader extends ClassLoader {
     
        private static FileClassLoader classLoader = new FileClassLoader();
     
        public static ClassLoader getClassLoader() {
            return classLoader;
        }
     
        @Override
        public URL getResource(String name) {
            URL url = getClass().getClassLoader().getResource(name);
            if (url == null) {
                try {
                    url = new File(name).toURI().toURL();
                } catch (MalformedURLException ex) {
                    ex.printStackTrace();
                }
            }
            return url;
        }
    }
    Ensuite pour récupérer le ResourceBundle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResourceBundle.getBundle(filePath, locale, FileClassLoader.getClassLoader());
    Ainsi si tu as ton fichier "C:\chemin\AppConfig.properties"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -jar monAppli.jar C:\chemin\AppConfig
    et tu récupère le paramètre.
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  16. #16
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut
    Merci beaucoup
    La patience est un arbre aux racines amères, mais aux fruits ci-doux.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/05/2009, 12h35
  2. Générer des sous-domaines automatiquement
    Par cyclopsnet dans le forum Apache
    Réponses: 6
    Dernier message: 23/02/2009, 08h53
  3. Générer un séquence en automatique
    Par zdz16 dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 15/01/2009, 10h38
  4. générer le manifest
    Par damien77 dans le forum Maven
    Réponses: 2
    Dernier message: 23/10/2008, 10h56
  5. [MySQL] Générer un identifiant (code) automatiquement
    Par hartecel dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/09/2008, 13h31

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