Jar exécutable se lance avec WinRaR
Fermé
ElexXVII
-
3 sept. 2015 à 23:43
ElexXVII Messages postés 45 Date d'inscription dimanche 10 août 2014 Statut Membre Dernière intervention 1 juillet 2017 - 4 sept. 2015 à 20:41
ElexXVII Messages postés 45 Date d'inscription dimanche 10 août 2014 Statut Membre Dernière intervention 1 juillet 2017 - 4 sept. 2015 à 20:41
A voir également:
- Winrar jar
- Winrar 64 bits windows 10 - Télécharger - Compression & Décompression
- Réparer fichier winrar endommagé en ligne - Télécharger - Compression & Décompression
- Fichier winrar endommagé - Télécharger - Compression & Décompression
- Winrar password unlocker - Télécharger - Récupération de données
- Fichier .jar - Forum Logiciels
10 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
4 sept. 2015 à 00:06
4 sept. 2015 à 00:06
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
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
4 sept. 2015 à 09:09
4 sept. 2015 à 09:09
"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 ;)
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
4 sept. 2015 à 10:58
4 sept. 2015 à 10:58
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
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 4/09/2015 à 16:08
Modifié par KX le 4/09/2015 à 16:08
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.
ElexXVII
Messages postés
45
Date d'inscription
dimanche 10 août 2014
Statut
Membre
Dernière intervention
1 juillet 2017
1
4 sept. 2015 à 17:52
4 sept. 2015 à 17:52
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 :)
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
4 sept. 2015 à 18:11
4 sept. 2015 à 18:11
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).
ElexXVII
Messages postés
45
Date d'inscription
dimanche 10 août 2014
Statut
Membre
Dernière intervention
1 juillet 2017
1
4 sept. 2015 à 18:24
4 sept. 2015 à 18:24
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 ;)
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
4 sept. 2015 à 18:34
4 sept. 2015 à 18:34
Oui, mais là tu es dans les sources .java mais ce que tu exécutes ce sont les .class
Et si tu rajoutes un package, il faut le déclarer dans le code (et recompiler).
Et si tu rajoutes un package, il faut le déclarer dans le code (et recompiler).
package package1; public class Main { public static void main(String[] args) {
ElexXVII
Messages postés
45
Date d'inscription
dimanche 10 août 2014
Statut
Membre
Dernière intervention
1 juillet 2017
1
Modifié par ElexXVII le 4/09/2015 à 18:43
Modifié par ElexXVII le 4/09/2015 à 18:43
C'EST BON CA FONCTIONNE, UN GRAND MERCI.
Plus qu'a le tester au bahut sur les vieux PC, en priant :D
Est-ce obligé de crée des package, car mon programme n'est pas ultra compliqué, donc, j'en ai pas besoin ...
Plus qu'a le tester au bahut sur les vieux PC, en priant :D
Est-ce obligé de crée des package, car mon programme n'est pas ultra compliqué, donc, j'en ai pas besoin ...
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
>
ElexXVII
Messages postés
45
Date d'inscription
dimanche 10 août 2014
Statut
Membre
Dernière intervention
1 juillet 2017
4 sept. 2015 à 18:44
4 sept. 2015 à 18:44
L'usage de package est conseillé, mais pas obligatoire.
Si tu n'en as pas, tu l'enlèves de ta commande.
Si tu n'en as pas, tu l'enlèves de ta commande.
set JAVA_EXE="%CD%\jre1.8\bin\java.exe"
cd workspace\project1\bin
%JAVA_EXE% Main
pause
ElexXVII
Messages postés
45
Date d'inscription
dimanche 10 août 2014
Statut
Membre
Dernière intervention
1 juillet 2017
1
Modifié par ElexXVII le 4/09/2015 à 18:48
Modifié par ElexXVII le 4/09/2015 à 18:48
C'est du detail, mais le.cmd ouvre la console et ma Jfenetre, y'a t'il un moyen de fermer la console, ou tout simplement de pas l'afficher (la console) ?
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
>
ElexXVII
Messages postés
45
Date d'inscription
dimanche 10 août 2014
Statut
Membre
Dernière intervention
1 juillet 2017
4 sept. 2015 à 18:57
4 sept. 2015 à 18:57
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)
ElexXVII
Messages postés
45
Date d'inscription
dimanche 10 août 2014
Statut
Membre
Dernière intervention
1 juillet 2017
1
4 sept. 2015 à 20:03
4 sept. 2015 à 20:03
Le package1 est bien référencer :
Dans chaque Classe :
ElexXVII
Messages postés
45
Date d'inscription
dimanche 10 août 2014
Statut
Membre
Dernière intervention
1 juillet 2017
1
4 sept. 2015 à 20:13
4 sept. 2015 à 20:13
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
4 sept. 2015 à 20:21
4 sept. 2015 à 20:21
Oui, c'est à ça que je pensais.
Remarque : on peut vérifier si le jar est bien construit en faisant comme ça :
NB. Je ne suis pas sûr du chemin où est situé Run.jar chez toi.
Remarque : on peut vérifier si le jar est bien construit en faisant comme ça :
set JAVA_EXE=%CD%\jre1.8\bin\java.exe
cd workspace\project1
%JAVA_EXE% -jar Run.jar
pause
NB. Je ne suis pas sûr du chemin où est situé Run.jar chez toi.
ElexXVII
Messages postés
45
Date d'inscription
dimanche 10 août 2014
Statut
Membre
Dernière intervention
1 juillet 2017
1
Modifié par ElexXVII le 4/09/2015 à 20:34
Modifié par ElexXVII le 4/09/2015 à 20:34
set JAVA_EXE=%CD%\jre1.8\bin\java.exele programme ce lance quand j'exécute ce .cmd
%JAVA_EXE% -jar Run.jar
pause
Mais quand je lance le .jar directement, sa me met l'erreur comme quoi il trouve pas la classe principale ...
Dit moi si t'a une solution ;)
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
>
ElexXVII
Messages postés
45
Date d'inscription
dimanche 10 août 2014
Statut
Membre
Dernière intervention
1 juillet 2017
4 sept. 2015 à 20:37
4 sept. 2015 à 20:37
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).
ElexXVII
Messages postés
45
Date d'inscription
dimanche 10 août 2014
Statut
Membre
Dernière intervention
1 juillet 2017
1
4 sept. 2015 à 20:41
4 sept. 2015 à 20:41
Ouai, je trouve sa bizarre que ça fonctionne pas, mais je peux deja :
- ouvrir le JAR via un cmd
- ouvrir le dossier du programme via une autre cmd
Donc, le plus important est fait (je peux utiliser le jre intégré), un grand merci a toi pour ton aide.
A une autre fois peut être ! :D
- ouvrir le JAR via un cmd
- ouvrir le dossier du programme via une autre cmd
Donc, le plus important est fait (je peux utiliser le jre intégré), un grand merci a toi pour ton aide.
A une autre fois peut être ! :D