Java temps de calcul 4 fois plus cour par lancement par le shell et par dble clc

Résolu/Fermé
benoit_28 Messages postés 43 Date d'inscription vendredi 20 mars 2020 Statut Membre Dernière intervention 11 juin 2023 - Modifié le 4 nov. 2021 à 15:40
benoit_28 Messages postés 43 Date d'inscription vendredi 20 mars 2020 Statut Membre Dernière intervention 11 juin 2023 - 5 nov. 2021 à 11:39
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.
A voir également:

3 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
4 nov. 2021 à 16:08
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.
String javaHome = System.getProperty("java.home");


Plus d'infos :
https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html
0
benoit_28 Messages postés 43 Date d'inscription vendredi 20 mars 2020 Statut Membre Dernière intervention 11 juin 2023
Modifié le 4 nov. 2021 à 19:06
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
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
4 nov. 2021 à 22:06
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.
  • javafxpackager en Java 7
  • javapackager en Java 8, 9, 10
  • jlink en Java 11, 12
  • jpackage depuis Java 14
0
benoit_28 Messages postés 43 Date d'inscription vendredi 20 mars 2020 Statut Membre Dernière intervention 11 juin 2023
5 nov. 2021 à 11:39
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!
0