Empaqueter application + jre
Fermé
JAVASE
-
Modifié le 22 juil. 2018 à 12:51
JavaApplication Messages postés 9 Date d'inscription mardi 24 juillet 2018 Statut Membre Dernière intervention 29 juillet 2018 - 29 juil. 2018 à 18:28
JavaApplication Messages postés 9 Date d'inscription mardi 24 juillet 2018 Statut Membre Dernière intervention 29 juillet 2018 - 29 juil. 2018 à 18:28
A voir également:
- Empaqueter application + jre
- Application mobile - Guide
- Jre download - Télécharger - Langages
- Application gps sans internet - Guide
- Desinstaller application windows - Guide
- Application miroir - Guide
5 réponses
JavaApplication
Messages postés
9
Date d'inscription
mardi 24 juillet 2018
Statut
Membre
Dernière intervention
29 juillet 2018
1
Modifié le 28 juil. 2018 à 21:35
Modifié le 28 juil. 2018 à 21:35
Bonjour KX et merci pour votre réponse,
Le seul souci avec toutes ces solutions c'est que même si cela fonctionne très bien avec un installateur MSI ou EXE classique,
Cela ne fonctionne pas lorsque je tente de convertir mon Setup en Appx, pour la simple raison que les fichiers du JRE ont été codé avec des langages de trop bas niveau pour être interprété par makeAppx.exe,
En faisant cela (méthodes que vous me suggérez), j'obtiens l'erreur suivante :
Le problème est que le JRE (le VM réel) est trop complexe pour UWP et utilise beaucoup d'API de bas niveau qui ne peuvent tout simplement pas être portées.
D'où l'intérêt de faire tenir l'application Java ainsi que le JRE dans un .exe,
C'est certes une procédure complexe mais si des développeurs développant sur le Store, comprennent à quel point il est fastidieux voir quasiment impossible de faire passer son application java sur le Microsoft Store,
Il y'a bien un autre moyen de le faire mais il est beaucoup plus complexe à reproduire,
Si vous pouviez m'aider à faire connaître cette méthode, cela m'aiderait beaucoup,
Cela aiderait beaucoup les autres développeur Java du Store,
Bonne soirée,
Le seul souci avec toutes ces solutions c'est que même si cela fonctionne très bien avec un installateur MSI ou EXE classique,
Cela ne fonctionne pas lorsque je tente de convertir mon Setup en Appx, pour la simple raison que les fichiers du JRE ont été codé avec des langages de trop bas niveau pour être interprété par makeAppx.exe,
En faisant cela (méthodes que vous me suggérez), j'obtiens l'erreur suivante :
Le problème est que le JRE (le VM réel) est trop complexe pour UWP et utilise beaucoup d'API de bas niveau qui ne peuvent tout simplement pas être portées.
D'où l'intérêt de faire tenir l'application Java ainsi que le JRE dans un .exe,
C'est certes une procédure complexe mais si des développeurs développant sur le Store, comprennent à quel point il est fastidieux voir quasiment impossible de faire passer son application java sur le Microsoft Store,
Il y'a bien un autre moyen de le faire mais il est beaucoup plus complexe à reproduire,
Si vous pouviez m'aider à faire connaître cette méthode, cela m'aiderait beaucoup,
Cela aiderait beaucoup les autres développeur Java du Store,
Bonne soirée,
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
22 juil. 2018 à 14:10
22 juil. 2018 à 14:10
Bonjour,
Je te propose de déposer ton code sur cette partie du site qui est faite pour ça :
https://codes-sources.commentcamarche.net/source/list/last
Dans la description, merci de mettre toutes les informations utiles (à quoi ça sert, comment s'en servir...) et une fois publié me redonner le lien dans cette discussion.
Je regarderai et on verra ensuite comment le mettre plus en valeur si besoin.
Je te propose de déposer ton code sur cette partie du site qui est faite pour ça :
https://codes-sources.commentcamarche.net/source/list/last
Dans la description, merci de mettre toutes les informations utiles (à quoi ça sert, comment s'en servir...) et une fois publié me redonner le lien dans cette discussion.
Je regarderai et on verra ensuite comment le mettre plus en valeur si besoin.
JavaApplication
Messages postés
9
Date d'inscription
mardi 24 juillet 2018
Statut
Membre
Dernière intervention
29 juillet 2018
1
24 juil. 2018 à 19:49
24 juil. 2018 à 19:49
Bonjour KX,
J'avais posté ceci et m'aviez invité à déposer mes fichiers sur CCM:
https://forums.commentcamarche.net/forum/affich-35481971-empaqueter-application-jre
Cependant, je vois que la limite pour l'importation de fichiers est de 10 Mo or mon projet entier lui fait 48 Mo,
Il m'est donc impossible de proposer mon concept au public,
je suis dans une impasse, comment puis-je remédier à cela s'il vous plait ?
Je vous remercie pour votre aide
PS: j'ai essayé de vous envoyer un MP mais est obtenu l'erreur suivante :
J'avais posté ceci et m'aviez invité à déposer mes fichiers sur CCM:
https://forums.commentcamarche.net/forum/affich-35481971-empaqueter-application-jre
Cependant, je vois que la limite pour l'importation de fichiers est de 10 Mo or mon projet entier lui fait 48 Mo,
Il m'est donc impossible de proposer mon concept au public,
je suis dans une impasse, comment puis-je remédier à cela s'il vous plait ?
Je vous remercie pour votre aide
PS: j'ai essayé de vous envoyer un MP mais est obtenu l'erreur suivante :
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
24 juil. 2018 à 20:01
24 juil. 2018 à 20:01
Bonjour,
Seuls les fichiers sources sont nécessaires, pas besoin de mettre le résultat de la compilation dans le zip.
Et si tu as 48 Mo de fichiers sources il y a un gros problème ;-)
Seuls les fichiers sources sont nécessaires, pas besoin de mettre le résultat de la compilation dans le zip.
Et si tu as 48 Mo de fichiers sources il y a un gros problème ;-)
JavaApplication
Messages postés
9
Date d'inscription
mardi 24 juillet 2018
Statut
Membre
Dernière intervention
29 juillet 2018
1
Modifié le 24 juil. 2018 à 20:08
Modifié le 24 juil. 2018 à 20:08
Bonjour,
c'est le JRE qui me prend autant de place,
Je vais essayer de le retirer et modifier donc le tutoral pour que l'utilisateur ajoute lui même et build comme indiqué...
Merci
c'est le JRE qui me prend autant de place,
Je vais essayer de le retirer et modifier donc le tutoral pour que l'utilisateur ajoute lui même et build comme indiqué...
Merci
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
>
JavaApplication
Messages postés
9
Date d'inscription
mardi 24 juillet 2018
Statut
Membre
Dernière intervention
29 juillet 2018
24 juil. 2018 à 20:53
24 juil. 2018 à 20:53
À voir ce que tu as fait, mais effectivement imposer une JRE n'est pas pérenne, en particulier quand on pense à la décomposition en modules de Java 9 qui réduit considérablement la taille de la JRE puisqu'elle n'embarque que les modules utilisés par le programme, donc chaque programme aura une JRE sur mesure.
JavaApplication
Messages postés
9
Date d'inscription
mardi 24 juillet 2018
Statut
Membre
Dernière intervention
29 juillet 2018
1
24 juil. 2018 à 21:13
24 juil. 2018 à 21:13
Étant donné que je souhaite que tous les programmes puisse être empaquetée en un clic, j'utilise Java 9 qui est plus léger pour ce que je souhaite réaliser,
Il sera possible d'utiliser Java 8 comme ça le sera dans mon exemple,
PS: dans le tuto, il y aura une version manuel et une version avec un script batch qui tente d'automatiser la construction de l'application,
Je ne sais pas si ce que je vais proposer sera ou non novateur,
D'ailleurs, le temps d'exécution peut allez jusqu'à 20 seconde pour les PC portable doté d'un I7
Il sera possible d'utiliser Java 8 comme ça le sera dans mon exemple,
PS: dans le tuto, il y aura une version manuel et une version avec un script batch qui tente d'automatiser la construction de l'application,
Je ne sais pas si ce que je vais proposer sera ou non novateur,
D'ailleurs, le temps d'exécution peut allez jusqu'à 20 seconde pour les PC portable doté d'un I7
JavaApplication
Messages postés
9
Date d'inscription
mardi 24 juillet 2018
Statut
Membre
Dernière intervention
29 juillet 2018
1
26 juil. 2018 à 14:58
26 juil. 2018 à 14:58
Bonjour KX, j'ai déposé le code source à ce lien:
https://codes-sources.commentcamarche.net/source/102740-application-java-jre-dans-un-exe-portabilite
Merci pour votre aide
JavaApplication
https://codes-sources.commentcamarche.net/source/102740-application-java-jre-dans-un-exe-portabilite
Merci pour votre aide
JavaApplication
JavaApplication
Messages postés
9
Date d'inscription
mardi 24 juillet 2018
Statut
Membre
Dernière intervention
29 juillet 2018
1
Modifié le 26 juil. 2018 à 16:24
Modifié le 26 juil. 2018 à 16:24
J'ai également oublié de préciser que cela fonctionnait très bien pour faire passer son application java sur le Pont du Bureau en vu d'un déploiement sur le Microsoft Store !
Merci
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
28 juil. 2018 à 17:22
28 juil. 2018 à 17:22
Bonjour,
J'ai regardé un petit peu ton projet et je trouve la procédure assez complexe, notamment dans la nécessité d'utiliser des outils tiers.
Est-ce que tu connais javapackager ?
C'est une commande dans le JDK qui permet de créer des applications natives (EXE ou MSI sous Windows, RPM ou DEB sous Linux, DMG ou PCK sous Mac).
Le principe est assez simple, cela créé un petit programme qui va faire un java -jar sur une JVM locale qui aura été copiée par le javapackager à partir du JDK de la compilation.
Est-ce que tu connais Apache Maven ?
C'est un outil de build standard dans le monde Java. J'ai fait un petit code de test (avec jars de dépendances et fichiers de ressources) qui permet d'intégrer l'utilisation de javapackager dans le build Maven pour éviter d'avoir à refaire la commande à la main.
Code de test → https://www.petit-fichier.fr/2018/07/28/helloworld/
Build → mvn clean package
Résultat 1 → target\bundles\helloworld-1.0\helloworld-1.0.exe
Résultat 2 → target\bundles\helloworld-1.0-1.0.exe
Remarque : j'ai utilisé les fonctionnalités de bases, communes à tous les OS, mais on peut faire des profils Maven et ajouter des options spécifiques pour chaque système d'exploitation.
Remarque : dans la mesure où je ne connais pas le déploiement sur Microsoft Store, je ne sais pas trop ce qu'il manque pour aboutir à un APPX valide.
J'ai regardé un petit peu ton projet et je trouve la procédure assez complexe, notamment dans la nécessité d'utiliser des outils tiers.
Est-ce que tu connais javapackager ?
C'est une commande dans le JDK qui permet de créer des applications natives (EXE ou MSI sous Windows, RPM ou DEB sous Linux, DMG ou PCK sous Mac).
Le principe est assez simple, cela créé un petit programme qui va faire un java -jar sur une JVM locale qui aura été copiée par le javapackager à partir du JDK de la compilation.
Est-ce que tu connais Apache Maven ?
C'est un outil de build standard dans le monde Java. J'ai fait un petit code de test (avec jars de dépendances et fichiers de ressources) qui permet d'intégrer l'utilisation de javapackager dans le build Maven pour éviter d'avoir à refaire la commande à la main.
Code de test → https://www.petit-fichier.fr/2018/07/28/helloworld/
Build → mvn clean package
Résultat 1 → target\bundles\helloworld-1.0\helloworld-1.0.exe
Résultat 2 → target\bundles\helloworld-1.0-1.0.exe
Remarque : j'ai utilisé les fonctionnalités de bases, communes à tous les OS, mais on peut faire des profils Maven et ajouter des options spécifiques pour chaque système d'exploitation.
Remarque : dans la mesure où je ne connais pas le déploiement sur Microsoft Store, je ne sais pas trop ce qu'il manque pour aboutir à un APPX valide.
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
28 juil. 2018 à 20:22
28 juil. 2018 à 20:22
Remarque : j'ai fait mon test avec le code précédent avec un JDK 8.
Là je viens de faire le test avec un JDK 10 et il faut faire quelques adaptations dans le pom.xml :
1) Ajouter ces deux lignes dans la balise
Quant au compiler.target, vu qu'on va lui copier-coller une JRE 10 autant lui donner cette valeur.
2) Remplacer la ligne suivante :
Autre changement, le sous dossier "bundles" a disparu, il faut aller chercher les .exe directement dans "target"
Remarque : le code de test n'est pas configuré pour travailler avec les modules, donc pour l'instant c'est une JRE complète qui est copié-collé, mais il existe bien sûr des options de javapackager pour gérer les modules.
Là je viens de faire le test avec un JDK 10 et il faut faire quelques adaptations dans le pom.xml :
1) Ajouter ces deux lignes dans la balise
<properties>
<maven.compiler.source>6</maven.compiler.source> <maven.compiler.target>10</maven.compiler.target>Explication : par défaut Maven travaille en Java 5, mais depuis Java 9 on ne peut compiler que du Java 6 ou plus.
Quant au compiler.target, vu qu'on va lui copier-coller une JRE 10 autant lui donner cette valeur.
2) Remplacer la ligne suivante :
<argument>-srcfiles</argument><argument>${project.build.directory}/${project.build.finalName}.jar</argument>Par les deux lignes suivantes :
<argument>-srcdir</argument><argument>${project.build.directory}</argument> <argument>-srcfiles</argument><argument>${project.build.finalName}.jar</argument>Explication : ça ressemble à un bug, mais javapackager n'accepte plus l'option en une seule ligne.
Autre changement, le sous dossier "bundles" a disparu, il faut aller chercher les .exe directement dans "target"
Remarque : le code de test n'est pas configuré pour travailler avec les modules, donc pour l'instant c'est une JRE complète qui est copié-collé, mais il existe bien sûr des options de javapackager pour gérer les modules.
Modifié le 28 juil. 2018 à 22:37
"C'est certe une procédure complexe mais si des développeurs développant sur le Store tombent sur ce topic, il comprendront de quoi il ressort"
Merci
29 juil. 2018 à 18:28