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

API standards et tierces Java Discussion :

lancer un test avec un fichier .bat


Sujet :

API standards et tierces Java

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 31
    Points : 22
    Points
    22
    Par défaut lancer un test avec un fichier .bat
    Bonjour

    L'equipe de prod n'etant pas dispo je veux faire un package de mon appli java pur (pas de web). J'ai mis tous les jars et je veux aprés avec un fichier.bat lancer la classe de test principale qui elle aussi se trouve dans l'un des jars.

    Qui a dejà fait ça ou conait la procedure car je galére grave et je dois livrer pour une recette par la MOA.

    merci

  2. #2
    Membre confirmé Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Points : 552
    Points
    552
    Par défaut
    Je vais répondre à ta question, vu que je suis déjà passé par là il y a 2 ans de ça.

    Imagine que l'application soit dans le package fr.maBoite.billy avec comme classe principale Principal.

    fr
    ..maBoite
    ....billy
    ......Principal.class
    ......etc

    Avant de créer ton jar, tu créés un dossier META-INF contenant un fichier de nom MANIFEST.MF

    fr
    ..maBoite
    ....billy
    ......Principal.class
    ......etc
    META-INF
    ..MANIFEST.MF


    Dans ce fichier, tu écris les lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Manifest-Version: 1.0
    Main-Class: fr.maboite.billy.Principal
    Class-Path: .
    Ensuite tu créés ton jar, qui est en fait un zip de l'ensemble des fichiers compilé plus le dossier META-INF.


    Pour finir, tu créés un fichier .bat avec le contenu suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    start javaw -jar <nom de ton jar>.jar
    exit
    notes
    Le .bat doit se trouver dans le même répertoire que le jar.

    Une variable d'environnement JAVA_HOME doit être défini, sinon il faut remplacer javaw par c:/java/jdkXXX/XXX/javaw

    Le exit sert à quitter la fenetre DOS quand tu lances le .bat.



    En espérant avoir été clair.


    Billy

  3. #3
    Membre habitué Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 301
    Points : 135
    Points
    135
    Par défaut
    Bonjour,

    Je viens d'essayer de suivre la méthode de billynirvana et cela ne fonctionne pas !

    J'obtiens l'erreur suivante :
    Failed to load Main-Class manifest attribute from toto.jar
    Pourtant j'ai créé la structure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    fr
    ..perso
    ....domiq
    ......TestJdbcOracle.class
    META-INF
    ..MANIFEST.MF
    Puis j'ai archiver cela en lançant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tar cvf toto.jar fr
    Vérification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    jar.exe tvf toto.jar
         0 Fri Apr 28 08:26:32 CEST 2006 META-INF/
        71 Fri Apr 28 08:26:32 CEST 2006 META-INF/MANIFEST.MF
         0 Fri Apr 28 08:20:22 CEST 2006 fr/
         0 Fri Apr 28 08:20:16 CEST 2006 fr/perso/
         0 Fri Apr 28 08:26:20 CEST 2006 fr/perso/domiq/
      7309 Thu Apr 27 17:30:46 CEST 2006 fr/perso/domiq/TestJdbcOracle.class
    et le contenu de mon manifest est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Manifest-Version: 1.0
    Main-Class: fr.perso.domiq.TestJdbcOracle
    Class-Path: . classes12.jar
    et je lance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -jar toto.jar
    Merci pour votre aide !

  4. #4
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Autre solution, construire le classpath et utiliser l'option -cp de la JVM:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    set CLASSPATH=lib/log4j.jar
    set CLASSPATH=%CLASSPATH%;lib/ant.jar
    ...
     
    set VMARGS=-Xloggc:C:\temp\loggc.log -Xmx64m -Xms64m
     
     
    "%JAVA_HOME%/java" %VMARGS% -cp %CLASSPATH% com.developpez.Main
    Ca permet de ne pas s'occuper du Manifest (et d'utiliser facilement plusieurs jars).

  5. #5
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Bonjour

    Pb de manifest

    Il faut le spécifier quand on lance la commande jar, sinon elle en crée un par défaut.

    Typical usage is

    % jar cf myjarfile *.class

    In this example, all the class files in the current directory are placed into the file named "myjarfile". A manifest file is automatically generated by the jar tool and is always the first entry in the jar file. By default, it is named META-INF/MANIFEST.MF. The manifest file is the place where any meta-information about the archive is stored. Refer to the Jar file specification for details about how meta-information is stored in the manifest file. If you have a pre-existing manifest file that you want the jar tool to use for the new jar archive, you can specify it using the -m option:

    % jar cmf myManifestFile myJarFile *.class

    Be sure that any pre-existing manifest file that you use ends with a new line. The last line of a manifest file will not be parsed if it doesn't end with a new line character. Note that when you specify "cfm" instead of "cmf" (i.e., you invert the order of the "m" and "f" options), you need to specify the name of the jar archive first, followed by the name of the manifest file:

    % jar cfm myJarFile myManifestFile *.class

  6. #6
    Membre habitué Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 301
    Points : 135
    Points
    135
    Par défaut
    Je viens même d'essayer autrement en faisant comme ceci mais toujours des erreurs !!!???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    jar cvf toto.jar fr
    manifest ajouté
    ajout : fr/(entrée = 0) (sortie = 0)(0% stocké)
    ajout : fr/perso/(entrée = 0) (sortie = 0)(0% stocké)
    ajout : fr/perso/domiq/(entrée = 0) (sortie = 0)(0% stocké)
    ajout : fr/perso/domiq/TestJdbcOracle.class(entrée = 7325) (sortie = 3714)(49% compressés)
    ajout : fr/perso/domiq/TestJdbcOracle.java(entrée = 9224) (sortie = 2297)(75% compressés)
    Nouveau manifest :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    type mymanifest.txt
    Main-Class: fr.perso.domiq.TestJdbcOracle
    Class-Path: . classes12.jar
    Puis modification du manifest :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    jar umf mymanifest.txt toto.jar
    Et enfin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -jar toto.jar
    Exception in thread "main" java.lang.NoClassDefFoundError: fr/perso/domiq/TestJdbcOracle (wrong name: TestJdbcOracle)
    at java.lang.ClassLoader.defineClass0(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    Incompréhensible !!!???
    Enfin je veux dire pour moi....

  7. #7
    Membre habitué Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 301
    Points : 135
    Points
    135
    Par défaut
    denisC,

    Etant débutant, peux-tu préciser la totalité des étapes de la solution que tu viens de nous donner s'il te plait ?

  8. #8
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    re,

    Juste deux petites questions

    Ton fichier fr/perso/domiq/TestJdbcOracle.java déclare bien une classe nommée TestJdbcOracle ?

    Ton manifest a bien un ligne vierge à la fin ?

    Sinon, je ne vois pas...

    bon courage

  9. #9
    Membre habitué Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 301
    Points : 135
    Points
    135
    Par défaut
    Oui mon fichier fr/perso/domiq/TestJdbcOracle.java déclare bien une classe nommée TestJdbcOracle.

    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
     
    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
     
    public class TestJdbcOracle {
     final static String jdbcURL = "jdbc:oracle:thin:@";
     final static String jdbcDriver = "oracle.jdbc.OracleDriver";
     static Connection con = null;
     
     public static void main(java.lang.String[] args) {
    ...
    Par contre, non mon manifest n'a pas de ligne vierge à la fin !
    Est-ce important ?

  10. #10
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    re,

    Est-ce important ?
    Selon la doc oui (voir message plus haut).

  11. #11
    Membre habitué Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 301
    Points : 135
    Points
    135
    Par défaut
    Je viens d'ajouter 2 lignes à la fin du fichier mymanifest.txt et cela ne change rien !

  12. #12
    Membre confirmé Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Points : 552
    Points
    552
    Par défaut
    Il faut que ton TestJdbcOracle doit dans le package fr.perso.domiq

    tu mets en entete de ton .java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    package fr.perso.domiq;

    et tu refais et ca marchera

  13. #13
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par domiq44
    denisC,

    Etant débutant, peux-tu préciser la totalité des étapes de la solution que tu viens de nous donner s'il te plait ?
    Euh,je vois pas trop ce que je pourrais préciser

    Dans ton cas, ça doit donner quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -cp toto.jar;classe12.jar fr.perso.domiq.TestJdbcOracle
    Ca devrait marcher.....

  14. #14
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "main" java.lang.NoClassDefFoundError: fr/perso/domiq/TestJdbcOracle (wrong name: TestJdbcOracle)
    Ta classe appartient à un package mais on dirait que cela n'est pas déclaré dans ton fichier source...

    Tu n'aurais pas oublié ceci par hasard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    package fr.perso.domiq;
    a++

  15. #15
    Membre habitué Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 301
    Points : 135
    Points
    135
    Par défaut
    Et oui, effectivement, le fait de mettre le code dans un package a résolu le problème !

    Erreur de débutant....

    Maintenant mon programme marche enfin.

    Merci à tous.

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

Discussions similaires

  1. Lancer un .sql dans un fichier .bat
    Par PrinceMaster77 dans le forum Installation
    Réponses: 5
    Dernier message: 27/10/2006, 10h49
  2. [9i][SQLPlus] spool en Interaction avec un fichier .bat
    Par Konrad Florczak dans le forum Sql*Plus
    Réponses: 34
    Dernier message: 07/09/2006, 16h08
  3. Lancement de l'executable avec un fichier.bat
    Par krolineeee dans le forum Windows
    Réponses: 3
    Dernier message: 28/07/2006, 16h03
  4. Problème avec un fichier .BAT
    Par jbidou88 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 01/05/2006, 13h03
  5. Problème avec un fichier .BAT
    Par jbidou88 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 26/04/2006, 14h55

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