Java temps de calcul 4 fois plus cour par lancement par le shell et par dble clc
Résolu
benoit_28
Messages postés
44
Date d'inscription
Statut
Membre
Dernière intervention
-
benoit_28 Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
benoit_28 Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
Mon programme est en java 8. Si je le lance à partir du Windows Power shell, par la commande
./java -jar mon_programme.jar,
l'éxécution est 4 fois plus courte que si je double clique sur mon_programme.jar. Or si je veux partager mon programme, c'est bien par un double clic qu'il faut que le lecteur l'utilise.
Y aurait-il une option quelque-part qui permette de corriger cela?
D'avance merci.
./java -jar mon_programme.jar,
l'éxécution est 4 fois plus courte que si je double clique sur mon_programme.jar. Or si je veux partager mon programme, c'est bien par un double clic qu'il faut que le lecteur l'utilise.
Y aurait-il une option quelque-part qui permette de corriger cela?
D'avance merci.
A voir également:
- Javapackager tutorial
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Classic shell - Télécharger - Personnalisation
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
3 réponses
Bonjour,
Est-ce que tu pourrais ajouter dans ton code l'affichage des propriétés du programme afin de voir quel exécutable Java est appelé dans un cas où dans l'autre.
Je n'ai pas testé mais je pense que la propriété java.home devrait suffire.
Plus d'infos :
https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html
Est-ce que tu pourrais ajouter dans ton code l'affichage des propriétés du programme afin de voir quel exécutable Java est appelé dans un cas où dans l'autre.
Je n'ai pas testé mais je pense que la propriété java.home devrait suffire.
String javaHome = System.getProperty("java.home");
Plus d'infos :
https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html
Merci de ta réponse. J'ai bien mis la ligne que tu m'as indiquée, et le résultat est le suivant:
javaHome C:\logiciels\jdk1.8.0_261\jre,
J'ai bien dans le C:\logiciels\jdk1.8.0_261\ un dossier jre, qui a un fichier de moins (sur 220 fichiers) que le C:\logiciels\jre1.8.0_261 lui aussi fourni par l'installation.
J'ai donc essayé de remplacer C:\logiciels\jdk1.8.0_261\ jre
par le C:\logiciels\jre1.8.0_261, mais quand j'ai recompilé mon programme, cela m'a donné:
Error: could not open `C:\Program Files\Java\jre1.8.0_291\lib\amd64\jvm.cfg
Tu notes bien que ce n'est pas le C:\logiciels\jdk1.8.0_261\jre1.8.0_261 qu'il a été chercher, mais le même dossier du C:\Program Files\Java, où le 261 a été remplacé par 291! ce qui est très curieux: il n'y a sur le fichier . C:\Program Files\Java qu'un C:\Program Files\Java\jre1.8.0_261.
J'ai artificiellement changé le 291 pour 261 dans le C:\Program Files\Java\jre1.8.0_261 -->C:\Program Files\Java\jre1.8.0_291 et cela fonctionne, mais le problème de consommation de temps pour le démarrage par double clic demeure intact.
Donc je pense, à part cet incident 261-->291, que tout est correct du coté des jre.
Je vais regarder si j'ai le même problème sur Java 9.
Mais je suis toujours preneur d'idées.
De toutes façons, Merci
javaHome C:\logiciels\jdk1.8.0_261\jre,
J'ai bien dans le C:\logiciels\jdk1.8.0_261\ un dossier jre, qui a un fichier de moins (sur 220 fichiers) que le C:\logiciels\jre1.8.0_261 lui aussi fourni par l'installation.
J'ai donc essayé de remplacer C:\logiciels\jdk1.8.0_261\ jre
par le C:\logiciels\jre1.8.0_261, mais quand j'ai recompilé mon programme, cela m'a donné:
Error: could not open `C:\Program Files\Java\jre1.8.0_291\lib\amd64\jvm.cfg
Tu notes bien que ce n'est pas le C:\logiciels\jdk1.8.0_261\jre1.8.0_261 qu'il a été chercher, mais le même dossier du C:\Program Files\Java, où le 261 a été remplacé par 291! ce qui est très curieux: il n'y a sur le fichier . C:\Program Files\Java qu'un C:\Program Files\Java\jre1.8.0_261.
J'ai artificiellement changé le 291 pour 261 dans le C:\Program Files\Java\jre1.8.0_261 -->C:\Program Files\Java\jre1.8.0_291 et cela fonctionne, mais le problème de consommation de temps pour le démarrage par double clic demeure intact.
Donc je pense, à part cet incident 261-->291, que tout est correct du coté des jre.
Je vais regarder si j'ai le même problème sur Java 9.
Mais je suis toujours preneur d'idées.
De toutes façons, Merci
En fait ce que je voulais savoir c'est si le java.home qui était utilisé était le même entre les deux exécutions du programme (et si la différence entre les deux justifiait l'écart de temps...)
Remarque : il est également possible que l'exécution par un double clic ne démarre pas le java.exe mais javaw.exe, ou ajoute des options... Cela peut se voir avec la commande jps (et l'option -v ? à vérifier...) ou avec l'application jvisualvm
NB. Si le problème vient de la JVM utilisée il est possible qu'en partageant ton programme chaque utilisateur ait un comportement différent selon leur JVM installée. C'est pour cela qu'il existe jpackage (ou équivalent selon les versions) pour embarquer ton code en même temps que la JVM que tu veux dans un .exe de manière à tout exécuter de la même manière sur tous les postes.
Remarque : il est également possible que l'exécution par un double clic ne démarre pas le java.exe mais javaw.exe, ou ajoute des options... Cela peut se voir avec la commande jps (et l'option -v ? à vérifier...) ou avec l'application jvisualvm
NB. Si le problème vient de la JVM utilisée il est possible qu'en partageant ton programme chaque utilisateur ait un comportement différent selon leur JVM installée. C'est pour cela qu'il existe jpackage (ou équivalent selon les versions) pour embarquer ton code en même temps que la JVM que tu veux dans un .exe de manière à tout exécuter de la même manière sur tous les postes.
- javafxpackager en Java 7
- javapackager en Java 8, 9, 10
- jlink en Java 11, 12
- jpackage depuis Java 14
Bravo, vous m'avez sorti d'affaire.
J'ai imprimé sur la fenêtre principale, par drawStrind le javaHome que vous m'avez indiqué. Et j'ai trouve C:\Program Files\Java\jre1.9.0.4, c'est à dire que la machine a été chercher le jre le plus récent dans les Program Files au lieu de prendre le jre se trouvant dans le jdk du java 8. En fait, j'ai essayé la semaine dernière de voir ce que cela donnait avec le java 9, et la conclusion de cette affaire est qu'il ne faut pas avoir plusieurs versions de java sur le program files.
Maintenant, j'ai retrouvé la vitesse correcte quand je double clique.
Un très grand MERCI!
J'ai imprimé sur la fenêtre principale, par drawStrind le javaHome que vous m'avez indiqué. Et j'ai trouve C:\Program Files\Java\jre1.9.0.4, c'est à dire que la machine a été chercher le jre le plus récent dans les Program Files au lieu de prendre le jre se trouvant dans le jdk du java 8. En fait, j'ai essayé la semaine dernière de voir ce que cela donnait avec le java 9, et la conclusion de cette affaire est qu'il ne faut pas avoir plusieurs versions de java sur le program files.
Maintenant, j'ai retrouvé la vitesse correcte quand je double clique.
Un très grand MERCI!