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

avec Java Discussion :

Sortie console DOS d'un jar


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 6
    Par défaut Sortie console DOS d'un jar
    Bonjour le forum,
    J'ai fait un petit programme Java (NewDetect) que j'ai exporté en Jar (via eclipse) et qui marche très bien.

    Mon problème c'est que lorsque j'exécute directement le Jar dans un fenêtre de commande ms-dos, il s'exécute bien, mais n'affiche rien.

    En fait je voudrais qu'il m'écrive qq lignes qd par exemple l'utilsateur ne met pas les bons paramètres sur la ligne de commande. Pour cela j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    System.out.println(
    "Le processus accepte 5 arguments en entree :\n"+
    "	-1)	-xml  : sort un fichier xml a destination de abcsrv\n"+
    "		-mail : envoie directement un mail de requete \n"+
    "	-2)	etc.");
    Si j'exécute depuis Eclipse, je vois mon message dans la console Eclipse.
    Ca marche aussi si j'entre dans la fenêtre de commande ms-dos
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -jar NewDetect.jar
    Par contre, ça ne marche pas qd j'entre directement dans la fenêtre de commande ms-dos :
    Le programme s'exécute, mais rien ne s'affiche.

    Y'a t-il une solution ? J'ai essayé d'utiliser System.console plutôt que System.out, j'ai cherché sur internet, mais je n'ai rien trouvé...

    Merci d'avance.

  2. #2
    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 : 46
    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
    probablement exécuté en utilisant javaw plutot que java. Les raisons d'avoir systématiquement deux java m'échappent totalement au passage. Si tu veux lancer tes jars avec support console, faut changer l'association des jar vers java.exe plutot que javaw.exe

  3. #3
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    Le problème ne vient pas de Java mais de Windows.

    Sous Windows il y a deux types d'applications :
    • Les applications consoles qui sont lié à une console "Dos". S'ils sont lancé dans une console leurs entrées/sorties sont relié à cette dernier.
      S'ils sont lancé par un programme graphique (Menu démarrer->Exécuter par exemple) ils ouvriront leurs propres fenêtre "Dos".
    • Les applications graphiques, qui sont complètement détaché des consoles, et donc leurs entrées/sorties sont perdu...


    Pour pallier à cela il y a deux JVMs sous Windows :
    • java, qui correspond à une application console.
    • javaw, qui correspond à une application graphique.


    Et par défaut les jar sont associés à javaw... donc plutôt destiné à être utilisé avec une application graphique.



    La solution serait de créer un launcher natif pour le système (.bat ou .exe).


    a++

    PS : Ce problème ne se rencontre pas sous les autres systèmes, où il n'y a pas de telle distinction entre les applications consoles et graphiques...

    [edit] tchize_ > Tu as ta réponse

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 6
    Par défaut
    Ok, merci.

    Par contre, ca me donne un autre problème :
    Si je change l'appli par defaut (j associe les jar à java.exe), mon programme ne s'exécute plus et plante lamentablement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    C:\>NewDetect.jar
    Exception in thread "main" java.lang.NoClassDefFoundError: C:\NewDetect/jar
    Caused by : java.lang.ClassNotFoundException: C:\NewDetect.jar
      at java.net.URLClassLoader$1.run(Unknown source)
      at java.security.AccessController.doPrivileged(Native Method)
      at etc.
    not find the main class: C:\NewDetect.jar. Program will exit.
    J'ai pourtant rien changé !

    De tte manière, c'est pas très intéréssant si chq personne devant l'exécuter doit aller changer les associations de fichiers, tout ça pour avoir un hypothetique msg d'erreur.
    Merci quand même.

    ps : mais ca minteresse aussi de savoir pourquoi ca plante qd je change javaw.exe -> java.exe... si vous avez le temps.

  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 : 46
    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
    t'as oublié le "-jar" dans la commande de ton association Du coup, java pense que tu veux lancer la classe C:\NewDetect/jar
    , qui forcément n'existe pas

  6. #6
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 6
    Par défaut
    ok.

    Mais c'est possible d'associer un jar à "java.exe -jar" ? (Je vois pas comment ajouter l'argument -jar ds le configurateur d'association de fichier windows).

    Parce que pour javaw.exe, pas besoin de spécifier le -jar.

    En plus, truc bizarre :
    Qd j'associe javaw.exe à jar (sans -jar) et que je tape :
    C:\>NewDetect.jar
    Pas de problème ca marche

    Par contre si je tape :
    C:\> javaw NewDetect.jar
    Ca fait un bruit de plantage windows, il dit rien, mais le programme ne s'exécute pas.

    Et qd je tape
    C:\>javaw -jar NewDetect.jar
    La c'est ok.

    Du coup, une conclusion (hative) serait de dire que (sous windows), java.exe n'est pas prévu pour être associé aux .jar et que si on veut une sortie console en exécutant direct un jar, ben c'est pas gagné.
    Bon, je crois que ca me depasse alors et

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Salut,

    À-tu essyé à partir d'un .bat contenant :

    java -jar "c:\\le_chemin\\Le.jar" ?

    Et à la console, tu entres : le_nom_du_bat.bat

    Cordialement,

    Dan

  8. #8
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par e-jibe Voir le message
    Mais c'est possible d'associer un jar à "java.exe -jar" ? (Je vois pas comment ajouter l'argument -jar ds le configurateur d'association de fichier windows).
    Cela doit être possible via le menu Outils->Options des dossiers puis Types de Fichiers...

    Citation Envoyé par e-jibe Voir le message
    Parce que pour javaw.exe, pas besoin de spécifier le -jar.
    Et pourtant oui ! javaw est strictement identique à java si ce n'est qu'il n'est pas associé à une console...

    Citation Envoyé par e-jibe Voir le message
    En plus, truc bizarre :
    Qd j'associe javaw.exe à jar (sans -jar) et que je tape :
    C:\>NewDetect.jar
    Pas de problème ca marche

    Par contre si je tape :
    C:\> javaw NewDetect.jar
    Ca fait un bruit de plantage windows, il dit rien, mais le programme ne s'exécute pas.

    Et qd je tape
    C:\>javaw -jar NewDetect.jar
    La c'est ok.
    Ce qui prouve bien que le -jar est obligatoire...
    Je pense que tu dois utiliser l'outil de configuration simplifié de Windows qui doit conserver le paramétrage original.



    Mais comme cela a déjà été dit, plutôt que de toucher à la configuration du système, il serait préférable d'utiliser un launcher...


    a++

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

Discussions similaires

  1. Jar auto executable : Pas de sortie console
    Par Clorish dans le forum Général Java
    Réponses: 3
    Dernier message: 31/03/2008, 11h09
  2. Réponses: 2
    Dernier message: 25/06/2007, 10h05
  3. Réponses: 7
    Dernier message: 02/09/2005, 15h15
  4. Postgresql 8, pgadmin et console Dos
    Par djibril dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 04/02/2005, 16h48
  5. [Encodage] Charset et console Dos
    Par ToYonos dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 01/02/2005, 12h10

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