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
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 !
A voir également:

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
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...
0
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
0
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
"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...
0
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 ;)
0
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
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.
F:\jre1.8.0_60\bin\java.exe Test
pause
0
Quand je met ça dans le .bat il me dit que "F:\..." n'est pas reconnu en tant que comme de interne ??

F:\Prog Java\jre1.8\bin\java.exe Main
pause


T'aura une solution ? :D
0

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
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
0
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
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).

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.
0
Merci je test ça des que je peux :D
0
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
J'ai tester, et malheureusement cela ne fonctionne tjr pas ....

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 :)
0
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
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.

set JAVA_EXE="%CD%\jre1.8\bin\java.exe"

Remarque :
package1.Main
c'é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).
0
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
j'ai changé le nom, mais mtn ça me met :
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...
(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 ;)
0
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
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).

package package1;

public class Main {
    public static void main(String[] args) {
0
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
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 ...
0
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
L'usage de package est conseillé, mais pas obligatoire.

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
0
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
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) ?
0
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
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
@echo off
dans le .bat mais normalement une JFrame ne devrait pas afficher grand chose de toute façon, ou alors des logs (cf. log4j)
0
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
Le package1 est bien référencer :
Dans chaque Classe :
0
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
J'ai l'impression que c'est plus un problème d'avec quoi j'ouvre le .jar, car la je fait "ouvrir avec", puis "parcourir", puis je vais rechercher java.exe :
puis je choisis donc :
C'est bien ça ?
0
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
Oui, c'est à ça que je pensais.

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.
0
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
set JAVA_EXE=%CD%\jre1.8\bin\java.exe
%JAVA_EXE% -jar Run.jar
pause
le programme ce lance quand j'exécute ce .cmd

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 ;)
0
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
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).
0
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
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
0