Partage
  • Partager sur Facebook
  • Partager sur Twitter

Un .exe avec java

Obtenir un fichier .exe

    11 octobre 2010 à 20:19:07

    Bonjour tout le monde !
    J'ai un projet java, j'ai tout compiler et tout marche bien mais je veux bien avoir un exe de mon projet .jar. Bref je veux bien avoir un module installable avec une icône sur le bureau pour qu'en cliquant sur ce dernier mon application se lance.

    j'ai un répertoire appelé 'web' contenant des images, des fichiers html/css/Js utilisés dans mon projet java. Je veux pouvoir incorporer le répertoire 'web' à l'exe pour qu'on ne puisse pas avoir accès au code php (c'est option est fait à dessein pour ne pas avoir les fichiers web sur un serveur mais en local).
    Merci pour vos différents approches de solution.
    Ps: on m'a proposer les fichiers msi mais je veux une approche multiplateforme.
    • Partager sur Facebook
    • Partager sur Twitter
      11 octobre 2010 à 20:56:18

      Le fichier .exe n'est absolument pas multi-plateforme, ni même la notion de "télécharger et cliquer sur le fichier pour installer" si on creuse un peu.

      Par contre, le .jar est bien multi-plateforme, et se lance par un simple double-clic dans tous les bureaux bien configurés.

      C'est quoi ton histoire de fichiers PHP ?
      • Partager sur Facebook
      • Partager sur Twitter
        11 octobre 2010 à 21:33:19

        Citation : SpaceFox

        Le fichier .exe n'est absolument pas multi-plateforme, ni même la notion de "télécharger et cliquer sur le fichier pour installer" si on creuse un peu.

        Par contre, le .jar est bien multi-plateforme, et se lance par un simple double-clic dans tous les bureaux bien configurés.



        Je crois pas qu'il aie demandé cela, ou bien?


        Si il a envie de faire un .exe, et que ce ne soit plus multiplateforme, il me semble que c'est son problème. Je comprends ton "désarroi" vis-à-vis de cela, mais ça question n'était pas là..


        @Antoinelaw, voici un tuto pour gérer un .exe, à partir de ton .jar (fait attention à la partie pour les dépendances, à bien mettre des adresses "relative", et pas "absolue".

        http://baptiste-wicht.developpez.com/t [...] tils/jsmooth/


        Ensuite, pour faire un faire installer, je te laisse voir du coté de InnoSetup (http://www.jrsoftware.org/isinfo.php), qui marche parfaitement :)
        • Partager sur Facebook
        • Partager sur Twitter
          11 octobre 2010 à 22:12:11

          ... Y'a pas de désarroi ou pas : c'est juste pas possible.

          Les .exe, c'est un format Windows.
          Donc s'il veut du .exe, il peut pas avoir du multi-plateformes. Et s'il veut du multi-plateformes, il peut pas avoir du .exe.
          • Partager sur Facebook
          • Partager sur Twitter
            11 octobre 2010 à 22:21:14

            Le truc, c'est que Java est fait pour être multiplate-forme. Ensuite, c'est comme SpaceFox l'a expliqué... ;)
            • Partager sur Facebook
            • Partager sur Twitter
              12 octobre 2010 à 11:41:30

              Citation : SpaceFox

              Le fichier .exe n'est absolument pas multi-plateforme, ni même la notion de "télécharger et cliquer sur le fichier pour installer" si on creuse un peu.

              Par contre, le .jar est bien multi-plateforme, et se lance par un simple double-clic dans tous les bureaux bien configurés.

              C'est quoi ton histoire de fichiers PHP ?



              J'ai opté pour java pour bénéficier de l'approche multiplateforme. Et je crois qu'il suffit de compiler le projet sous différent OS pour avoir la version correspondante. :)
              Il faut penser aussi à l'utilisateur c'est à dire lui permettre d'installer facilement le produit. Dans le cas de java je ne sais comment on procède. Si je garde le fichier jar puis grâce à inno Setup je pourrais avoir une icône sur le bureau et ne pas avoir l'icône de java dans la barre des tâches, ça irait bien.

              J'utilise java avec une libraire QtJambi Webkit que je veux pouvoir inclure dans mon Jar.
              mon application permet d'afficher des pages web grâce au composant Qwebview de Webkit. je veux qu'on ne puisse pas avoir accès à ces pages qui ce trouve qui se trouve dans un répertoire que je veux (excusé moi le mot) encapsulé dans le jar ou bien l'exe ou un dll (je ne sais pas ce qui fera ce que je veux). l'essentiel c'est qu'on ait pas accès aux pages web du répertoires.
              Merci pour vos approches de solution.
              • Partager sur Facebook
              • Partager sur Twitter
                12 octobre 2010 à 13:19:12

                Alors je me répête : Java est multi-plateforme. Pas besoin de compiler ou whatever, le .jar est exécutable "tel quel" sur n'importe quelle plate-forme disposant d'une JVM.
                Par contre, et là c'est l'inconvénient de la chose, il faut une JVM installée.
                Je sais pas la difficulté d'installation d'une JVM selon l'OS (je dirais "faible", mais le concept peut perturber).

                J'ai toujours rien compris à cette histoire de PHP. Tu as des fichiers PHP distribués avec ton programme ?

                PS : il me semble qu'on peut coller une icône arbitraire à un JAR, mais j'en suis pas certain et je sais pas comme faire. A googliser.
                • Partager sur Facebook
                • Partager sur Twitter
                  12 octobre 2010 à 13:57:23

                  Salut,

                  Je pense que ce qu'il veut c'est inclure dans un paquet toutes ses ressources et fermer ce paquet pour que personne ne puisse accéder à toutes ses ressources (fichiers web entre autre). Il voit donc un fichier exe comme le conteneur idéal, je me trompe @antoinelaw ?

                  Tu a différentes approches, tu peux inclure des fichiers dans ton .Jar, tu peux compiler ton code en code natif (par contre les performances ne seront certainement pas les même qu'avec le JIT de la JVM), tu peux créer un programme en C qui lancera ton programme java (et tu lui attache en ressources tes fichiers) bref, tu a de quoi regarder.

                  juste une question que @SpaceFox te pose depuis le début, à quoi ils te servent les fichiers php ? car sans serveur sur la machine pour les interpréter et à défaut d'avoir un interpréteur embarqué je ne comprend pas leurs utilités...
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Le développement de jeu vidéo vous intéresse ? Parlons en !
                    12 octobre 2010 à 17:08:46

                    Citation : CYann

                    Salut,
                    Il voit donc un fichier exe comme le conteneur idéal, je me trompe @antoinelaw ?
                    juste une question que @SpaceFox te pose depuis le début, à quoi ils te servent les fichiers php ? car sans serveur sur la machine pour les interpréter et à défaut d'avoir un interpréteur embarqué je ne comprend pas leurs utilités...



                    Merci @CYann pour ta réponse tu as tout compris. Exactement, je vois les fichier exe comme conteneur idéal mais si je trouve mieux je l'utiliserait.
                    les fichier php sont l'interface de mon application (ce sont des pages web avec tout ce que ça peut utiliser: html/css;js/jquery;php/mysql). Mais pour la remarque sur le serveur je n'y avait pas pensé. Avoir un interpréteur embarqué serait vraiment bien. Mais lequel je ne sais pas.
                    Si je pourrait avoir un lien pour le JIT avec code native dont tu parles et pour un interpréteur embarqué je serais ravi, le reste je m'en charge.
                    S'il y a une autre approche carrément différent du mien main en ope, je serais aussi prenant.

                    Mon objectif étant d'ouvrir mes pages (web bien sur) dans une fenêtre (ne me parlez pas de navigateur ;) ) et éviter qu'on ai accès au code des pages web.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      12 octobre 2010 à 17:53:53

                      Le *.jar sert déjà de conteneur, non ? :o
                      • Partager sur Facebook
                      • Partager sur Twitter
                        12 octobre 2010 à 19:18:55

                        Citation : Nicolas M.

                        Le *.jar sert déjà de conteneur, non ? :o



                        Mon problème ne consiste pas à avoir un fichier .Jar simple mais un fichier .Jar contenant à la fois mon répertoire web et un serveur ou interpréteur web embarqué. Voir a proposition de CYann.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          12 octobre 2010 à 19:35:14

                          Je ne sais pas si ce que tu cherche à faire au final est réalisable, à cause de ton histoire de fichiers PHP qui contient des commandes PHP ET MySQL.

                          En fait ce n'est pas rare de voir des interpréteurs embarqués en PHP (c'est le PHP CLI), mais ça ne contient pas un SGBD comme MySQL. A la rigueur tu peux te tourner vers SQLite (PHP le prend en charge avec les bonnes extensions). En fait je ne sais pas si tu fait vraiment la différence entre les modèles client et serveurs, mais si c'est le cas ce n'est pas grave, prend le temps de relire les cours du site (ou d'autres comme tu veux hein).

                          Sinon si tu est bien conscient de ce que tu dit et que tu comprend parfaitement le concept du client/serveur alors c'est plutôt un serveur (Apache ou autre) MySQL, PHP qu'il faudra embarquer dans on jar ou ton exe. Quoi qu'il en soit, cette approche est n'est TOTALEMENT pas portable.

                          Je pense que si tu avais réalisé ton application en C++ avec Qt tu aurais eu beaucoup moins de problèmes (en fait tu aurais toujours eux ton soucis des pages PHP...).

                          Je te conseil donc de revoir ton architecture pour faire quelque chose de réalisable, je ne met pas en doute ton travail nous sommes d'accord, mais des fois c'est pas mal de faire le point.

                          Sinon pour en revenir au Jar, c'est effectivement un conteneur dans lequel tu peux ajouter tes dossiers web etc.. mais si tu y embarque un interpréteur PHP ou un exécutable tu peux dire adieu à ce pourquoi Java est principalement fait : Faire des applications multiplateforme.

                          Je pense que tu devrais nous en dire plus sur ton architecture donc.

                          Pour les liens c'est simple, une recherche sur google te donnera de bons résultats, cherche en particuliers pour la compilation en .exe : GNU GCJ, Excelsior JET ou IvMaiSoft LLC. Pour la compilation d'un Jar personnalisé une recherche sur google te donnera aussi des résultats en tapant "Construction de fichier jar".
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Le développement de jeu vidéo vous intéresse ? Parlons en !
                            13 octobre 2010 à 14:39:15

                            Citation : CYann


                            Je pense que tu devrais nous en dire plus sur ton architecture donc.



                            Voici en bref ce que je veux faire.
                            Je veux faire une application clien/seveur. Mon SGBD est SQL Server (il m'a été imposé et va se trouver sur le serveur). J'ai des notion de JEE (car avoir lu le tuto sur sdz) mais je maîtrise plus Php/mysql, donc mon application est web (et j'installerais wamp sur le serveur).

                            1. Je ne veux pas utiliser un navigateur habituel (personnalisation oblige). J'ai opté pour le webkit de Qt et comme je suis plus à l'aise avec le code java j'ai pu avoir mon navigateur perso avec QtJambi et eclipse dans et mes pages web s'affiche parfaitement.

                            2. Je veux du multiplateforme donc avec le .jar c'est gagné.

                            3. Je ne veux pas qu'on ai accès à mes pages web (le code source) sur le serveur (le chargé de la maintenance par exemple). Le serveur est installé en local sur une machine accessible en réseau et non chez un hébergeur web. C'est là que mon problème commence (mettre mes pages php dans le fichier .jar ou un exe).

                            Donc l'idée du serveur embarqué n'est obligé s'il y a une autre solution. ou bien garder mes pages php dans le répertoire www du serveur mais avoir un moyen de cacher le code.
                            Ps: Ce n'est pas que je suis parano mais on me demande de cacher mon code php (mes pages web).

                            • Partager sur Facebook
                            • Partager sur Twitter
                              13 octobre 2010 à 18:11:01

                              Je ne comprend pas vraiment ton projet.. Tu dois travailler avec un SGBD SQL Server et tu install Wamp, bon tu accède peut être à ta BDD avec PHP, OK. Maintenant les pages qui sont stockées sur le serveur, elles ne sont pas accésible depuis le navigateur (je parle des sources), si tu veux qu'on ne puisse pas essayer de récupérer les pages tu place un fichier .htaccess à la racine de ton projet avec une directive Deny From All .

                              Si tu veux du multiplateforme ne pense même à un fichier exécutable, ni à un serveur embarqué (à moins que tu en programme un en Java). Mais j'ai vraiment du mal à comprendre comment fonctionne ton projet, donc c'est difficile d'être claire.

                              Un navigateur web n'a pas besoin de page PHP pour fonctionner, on peut lui donner des pages d'accueil perso avec du html et du javascript. Pourquoi ne pas demander à ton navigateur de se connecter sur le serveur directement pour voir tes pages PHP ? Et pour qu'elles ne soient pas visibles tu utilise un .htaccess (comme je l'ai dit plus haut).
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Le développement de jeu vidéo vous intéresse ? Parlons en !
                                14 octobre 2010 à 10:45:59

                                Citation : CYann

                                Et pour qu'elles ne soient pas visibles tu utilise un .htaccess



                                Je connais bien .htaccess et apparemment tout est résolu sauf que sauf que .htaccess bloc l'accès au répertoire seulement via le navigateur et non par l'interface graphique ou la consol.

                                Je rappel que mon application ne tourne qu'en local et non pas sur un serveur web (si ce fût le cas je ferais confiance à mon hébergeur et htaccess pour l'accès à mes code sources).
                                mais il s'agit d'un serveur local ce qui fait qu'un simple utilisateur qui se balade dans poste de travail puis c:\ puis c:\wamp puis c:\wamp\www puis c:\wamp\www\mon_projet aura accès à mes codes sources. Ce qui nous ramène à la case départ: "fermer mes fichier web dans le .Jar"
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  14 octobre 2010 à 16:05:16

                                  Je ne sais pas comment résoudre ton problème dans ce cas. Peut être essayer d'interdire l'accès au dossier c:\wamp\ton_projet mais sous Windows je ne sais pas comment cela peut ce faire (surtout si l'utilisateur est administrateur).
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Le développement de jeu vidéo vous intéresse ? Parlons en !
                                    16 octobre 2010 à 16:00:47

                                    De toute façon, tes fichiers seront toujours accessible dans le fichier .exe, compte pas la dessus pour la sécurité...
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Un .exe avec java

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown