Jar exécutable se lance avec WinRaR
ElexXVII
-
ElexXVII Messages postés 45 Date d'inscription Statut Membre Dernière intervention -
ElexXVII Messages postés 45 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un problème, qui a déjà été posé, mais je n'est toujours pas la réponse que je cherche :
J'ai un fichier .jar exécutable, créé par l'IDE Eclipse.
Mon problème est que, lorsque je double-clique sur le .jar, windows l'ouvre avec WinRar (et j'ai tout essayer, de changer le logiciel de lancement dans "ouvrir avec", j'ai même essayer de l'ouvrir avec "java.exe", en vain ),alors que je voudrait qu'il ouvre mon programme dans la console, comme un .bat le ferrait ...
Merci d'avance, a bientôt !
J'ai un problème, qui a déjà été posé, mais je n'est toujours pas la réponse que je cherche :
J'ai un fichier .jar exécutable, créé par l'IDE Eclipse.
Mon problème est que, lorsque je double-clique sur le .jar, windows l'ouvre avec WinRar (et j'ai tout essayer, de changer le logiciel de lancement dans "ouvrir avec", j'ai même essayer de l'ouvrir avec "java.exe", en vain ),alors que je voudrait qu'il ouvre mon programme dans la console, comme un .bat le ferrait ...
Merci d'avance, a bientôt !
A voir également:
- Winrar java
- Winrar - Télécharger - Compression & Décompression
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
10 réponses
Bonjour,
Un .jar ne s'ouvrira jamais comme un .bat le ferait car Java n'est pas capable de créer de lui même une console.
Si tu veux ouvrir un programme console Java, tu dois d'abord ouvrir une console et y exécuter la commande Java pour ouvrir le programme.
La lecture "ouvrir avec" Java est faite pour exécuter des programmes avec interfaces graphiques (qui n'ont donc pas besoin de console).
Pour le "problème" de l'ouverture par WinRar tu peux regarder ici :
https://forums.commentcamarche.net/forum/affich-27495926-jar-qui-s-ouvre-avec-winrar
Perso en tant que développeur Java, ça m'arrange que les .jar s'ouvrent avec WinRar plutôt que Java, mais chacun son choix...
Un .jar ne s'ouvrira jamais comme un .bat le ferait car Java n'est pas capable de créer de lui même une console.
Si tu veux ouvrir un programme console Java, tu dois d'abord ouvrir une console et y exécuter la commande Java pour ouvrir le programme.
La lecture "ouvrir avec" Java est faite pour exécuter des programmes avec interfaces graphiques (qui n'ont donc pas besoin de console).
Pour le "problème" de l'ouverture par WinRar tu peux regarder ici :
https://forums.commentcamarche.net/forum/affich-27495926-jar-qui-s-ouvre-avec-winrar
Perso en tant que développeur Java, ça m'arrange que les .jar s'ouvrent avec WinRar plutôt que Java, mais chacun son choix...
Merci de m'avoir répondu si vite, j'ai donc pris la solution de facilité : le bon "cmd" des familles ;)
J'aurait 2 autres questions, si tu (ou qqun d'autre) peut y répondre :
- Imaginons que je mette le dossier du JRE dans celui de mon/mes programme(s), le programme pourra t'il ce lancer sur n'importe quel ordinateur, ou faut que j'entre une/plusieurs ligne de codes pour lui donné l'adresse du JRE intégrer ?
- Est il possible de fermer la console sans fermer le programme ( mon programme ouvre une JFrame pour l'interface graphique, mais j'ai mis une fenetre derrière pour le "debugage", qui montre tout les détails du logiciel au démarrage de celui-ci), serait t'il possible, qu'ensuite, la console se ferme MAIS que le programme continue sur la JFrame ?
Merci de m'avoir lue et merci a ceux qui me répondront, xD
J'aurait 2 autres questions, si tu (ou qqun d'autre) peut y répondre :
- Imaginons que je mette le dossier du JRE dans celui de mon/mes programme(s), le programme pourra t'il ce lancer sur n'importe quel ordinateur, ou faut que j'entre une/plusieurs ligne de codes pour lui donné l'adresse du JRE intégrer ?
- Est il possible de fermer la console sans fermer le programme ( mon programme ouvre une JFrame pour l'interface graphique, mais j'ai mis une fenetre derrière pour le "debugage", qui montre tout les détails du logiciel au démarrage de celui-ci), serait t'il possible, qu'ensuite, la console se ferme MAIS que le programme continue sur la JFrame ?
Merci de m'avoir lue et merci a ceux qui me répondront, xD
"je mette le dossier du JRE dans celui de mon/mes programme(s)"
Très mauvaise idée. Ça fonctionnerait (pas forcément comme tu le penses) mais il peut y avoir des effets de bords dramatiques et particulièrement complexes à gérer, cette solution ne doit pas être un choix par défaut.
En plus ça veut dire que tu imposes à l'utilisateur d'utiliser TA version de Java, alors qu'il en a déjà peut-être une installée, peut-être même plus récente que la tienne... et toi tu lui en imposes une autre, qui plus est pour chaque programme que tu fais (donc 150 Mo à chaque fois...) ou alors mutualisée et c'est là que les ennuis commencent.
Le fonctionnement de Java suppose que l'utilisateur installe sa machine virtuelle, en fonction de son système d'exploitation (Windows, Linux), de son architecture (32 ou 64 bits), il y a même plusieurs "vendeurs" disponibles (Oracle, OpenJDK...), ce n'est donc pas à chaque programme de venir avec sa JVM. Plus tu essaieras de t'éloigner de l'architecture Java, plus tu te créeras de problèmes (inutiles).
"que j'entre une/plusieurs ligne de codes pour lui donné l'adresse du JRE intégrer ?"
Il n'y a pas grand chose à faire, juste à pointer vers le bon java.exe (par défaut c'est celui qui est renseigné dans la variable d'environnement PATH qui est pris).
"fermer la console sans fermer le programme"
Si un programme est créé par une console, son processus est lié à cette console, si tu coupes la consoles, tu coupes le programme. Pour le débogage je te conseilles plutôt de créer des fichiers de logs (Apache Log4j est de loin l'API la plus utilisée dans le monde Java), du coup tu n'as plus besoin de console...
Très mauvaise idée. Ça fonctionnerait (pas forcément comme tu le penses) mais il peut y avoir des effets de bords dramatiques et particulièrement complexes à gérer, cette solution ne doit pas être un choix par défaut.
En plus ça veut dire que tu imposes à l'utilisateur d'utiliser TA version de Java, alors qu'il en a déjà peut-être une installée, peut-être même plus récente que la tienne... et toi tu lui en imposes une autre, qui plus est pour chaque programme que tu fais (donc 150 Mo à chaque fois...) ou alors mutualisée et c'est là que les ennuis commencent.
Le fonctionnement de Java suppose que l'utilisateur installe sa machine virtuelle, en fonction de son système d'exploitation (Windows, Linux), de son architecture (32 ou 64 bits), il y a même plusieurs "vendeurs" disponibles (Oracle, OpenJDK...), ce n'est donc pas à chaque programme de venir avec sa JVM. Plus tu essaieras de t'éloigner de l'architecture Java, plus tu te créeras de problèmes (inutiles).
"que j'entre une/plusieurs ligne de codes pour lui donné l'adresse du JRE intégrer ?"
Il n'y a pas grand chose à faire, juste à pointer vers le bon java.exe (par défaut c'est celui qui est renseigné dans la variable d'environnement PATH qui est pris).
"fermer la console sans fermer le programme"
Si un programme est créé par une console, son processus est lié à cette console, si tu coupes la consoles, tu coupes le programme. Pour le débogage je te conseilles plutôt de créer des fichiers de logs (Apache Log4j est de loin l'API la plus utilisée dans le monde Java), du coup tu n'as plus besoin de console...
Merci pour ta reponse, je ferait ça pour les logs.
Le probleme du JRE quie se pose car c'est un projet pour le bac et sur les ordis du bahut quand je lance mes prgrammes, ça ne fonctionne pas, et je ne comprend pas pk.
De plus le path est bloquer et je ne peut pas y acceder ...
Merci tout de meme, et peut etre a bientot ;)
Le probleme du JRE quie se pose car c'est un projet pour le bac et sur les ordis du bahut quand je lance mes prgrammes, ça ne fonctionne pas, et je ne comprend pas pk.
De plus le path est bloquer et je ne peut pas y acceder ...
Merci tout de meme, et peut etre a bientot ;)
Dans le cadre d'un projet comme le tien, tu peux le faire, ça fonctionnera.
Les problèmes dont je parlais c'est plutôt si tu avais l'intention de proposer ton programme à un grand nombre d'utilisateurs quelconques en substituant leur installation de Java par la tienne.
Remarque : Tu peux même mettre la JRE sur une clé USB.
Les problèmes dont je parlais c'est plutôt si tu avais l'intention de proposer ton programme à un grand nombre d'utilisateurs quelconques en substituant leur installation de Java par la tienne.
Remarque : Tu peux même mettre la JRE sur une clé USB.
F:\jre1.8.0_60\bin\java.exe Test
pause
Quand je met ça dans le .bat il me dit que "F:\..." n'est pas reconnu en tant que comme de interne ??
T'aura une solution ? :D
F:\Prog Java\jre1.8\bin\java.exe Main pause
T'aura une solution ? :D
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai écrit un peu vite, je m'en excuse, donc, ça me met une erreure
"f:\" non reconnu comme commande interne.
Et j'ai aussi essayer en mettant mes fichier dans le dossier bin du JRE
Et pareil, une erreur :
Impossible de trouver/Charger la classe Main
"f:\" non reconnu comme commande interne.
Et j'ai aussi essayer en mettant mes fichier dans le dossier bin du JRE
cd F:\jre1.8\bin jama.exe Main //ou java Main (j'ai essayer les 2) Pause
Et pareil, une erreur :
Impossible de trouver/Charger la classe Main
Déjà ne mets pas tes fichiers dans le dossier bin du JRE, ça n'a rien à faire là.
Là où tu dois faire ton cd c'est là où sont tes classes.
Admettons que tu sois sur ta clé USB (F:\ ou autre chose) et que tu ais cette structure de dossiers (il faut adapter à ton cas bien sûr).
Tu peux écrire dans RunProject1.cmd ceci :
Remarque : là on a pris une JRE, mais si tu voulais faire des compilations, tu pourrais aussi faire fonctionner un JDK sur une clé USB, de la même manière.
Là où tu dois faire ton cd c'est là où sont tes classes.
Admettons que tu sois sur ta clé USB (F:\ ou autre chose) et que tu ais cette structure de dossiers (il faut adapter à ton cas bien sûr).
F:\
RunProject1.cmd
jre1.8
bin
java.exe
workspace
project1
src
package1
Main.java
bin
package1
Main.class
Tu peux écrire dans RunProject1.cmd ceci :
set JAVA_EXE=%CD%\jre1.8\bin\java.exe cd workspace\project1\bin %JAVA_EXE% package1.Main pause
Remarque : là on a pris une JRE, mais si tu voulais faire des compilations, tu pourrais aussi faire fonctionner un JDK sur une clé USB, de la même manière.
J'ai tester, et malheureusement cela ne fonctionne tjr pas ....
Structure :
RunMe.cmd :
Mais la console m'affiche :
Je ne sais pas si c'est moi qui est fait une erreur, merci encore une fois de m'aider :)
Structure :
K:\
RunMe.cmd
jre1.8
bin
java.exe
workspace
project1
bin
package1
Main.class
src
package1
Main.java
RunMe.cmd :
set JAVA_EXE=%CD%\jre1.8\bin\java.exe
cd workspace\project1\bin
%JAVA_EXE% package1.Main
pause
Mais la console m'affiche :
K:\Prog Java\'EscaChrono>set JAVA_EXE=K:\Prog Java\'EscaChrono\jre1.8\bin\java.exe
K:\Prog Java\'EscaChrono>cd workspace\project1\bin
K:\Prog Java\'EscaChrono\workspace\project1\bin>K:\Prog Java\'EscaChrono\jre1.8\bin\java.exe package1.Main
'K:\Prog' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.
K:\Prog Java\'EscaChrono\workspace\project1\bin>pause
Appuyez sur une touche pour continuer...
Je ne sais pas si c'est moi qui est fait une erreur, merci encore une fois de m'aider :)
Le problème c'est les espaces dans le nom de ton dossier "Prog Java".
Parce que du coup, il découpe "K:\Prog Java\..." comme si "K:\Prog" était un programme et "Java\..." les paramètres de ce programme (qui n'existe pas donc ça plante).
Du coup dans l'invite de commandes il va falloir rajouter des guillemets (ou renommer ton dossier) pour ne pas que l'espace pose problème.
Remarque :
Parce que du coup, il découpe "K:\Prog Java\..." comme si "K:\Prog" était un programme et "Java\..." les paramètres de ce programme (qui n'existe pas donc ça plante).
Du coup dans l'invite de commandes il va falloir rajouter des guillemets (ou renommer ton dossier) pour ne pas que l'espace pose problème.
set JAVA_EXE="%CD%\jre1.8\bin\java.exe"
Remarque :
package1.Mainc'était un exemple, "package1" est à remplacer par tes propres nom de package (si tu en as), de même que "Main" est à remplacer par le bon nom de classe (celle qui contient la méthode main).
j'ai changé le nom, mais mtn ça me met :

(Désolé, CCM rend la photo un peu flou)
Et je prend les même nom que toi pour être sur que ça ne vienne pas d'un problème de nom.
Quand ça fonctionnera, je les personnaliserait ;)
K:\ProgJava\'EscaChrono>set JAVA_EXE=K:\ProgJava\'EscaChrono\jre1.8\bin\java.exe
K:\ProgJava\'EscaChrono>cd workspace\project1\bin
K:\ProgJava\'EscaChrono\workspace\project1\bin>K:\ProgJava\'EscaChrono\jre1.8\bi
n\java.exe package1.Main
Erreur : impossible de trouver ou charger la classe principale package1.Main
K:\ProgJava\'EscaChrono\workspace\project1\bin>pause
Appuyez sur une touche pour continuer...

Et je prend les même nom que toi pour être sur que ça ne vienne pas d'un problème de nom.
Quand ça fonctionnera, je les personnaliserait ;)
Non ça ce n'est pas possible, regarde ma réponse de ce matin (#3).
Éventuellement on peut masquer ce qu'affiche la console avec
Éventuellement on peut masquer ce qu'affiche la console avec
@echo offdans le .bat mais normalement une JFrame ne devrait pas afficher grand chose de toute façon, ou alors des logs (cf. log4j)
Donc le jar est bon. C'est vraiment le "Ouvrir avec" qui pose problème...
Je ne sais pas si ça vaut le coup d'insister. Même si on arrivait à le faire marcher chez toi c'est pas sûr que ça marche dans ton lycée. Et peut-être que ça marchera au lycée sans que ça fonctionne chez toi.
Au pire tu auras la solution avec la .bat qui garde une console d'ouverte (mais tu peux la minimiser dans la barre des tâches si tu veux).
Je ne sais pas si ça vaut le coup d'insister. Même si on arrivait à le faire marcher chez toi c'est pas sûr que ça marche dans ton lycée. Et peut-être que ça marchera au lycée sans que ça fonctionne chez toi.
Au pire tu auras la solution avec la .bat qui garde une console d'ouverte (mais tu peux la minimiser dans la barre des tâches si tu veux).