Forum Programmation.java executer un binaire natif encapsulé ds un JAR

Posté par  .
Étiquettes : aucune
0
13
oct.
2004
Hello journal !

J'ai une appli packagée dans un JAR file. Celle-ci execute à travers Runtime.getRuntime().exec() un binaire natif. J'aimerai encapsuler ce binaire dans le JAR pour tout distribuer le tout en un seul fichier. J'imagine qu'il faut d'abord d'extraire ce binaire avant de l'executer. Juste ?

Probleme, lorsque j'extrait le binaire natif dans un fichier temporaire, ce dernier a les permissions -rw-rw-r-- , c'est a dire que je ne peux pas l'executer. D'aillers, si j'essaye, je me retrouve avec un java.io.IOException: blablabla : cannot execute

Si une ame charitable a une solution, ca m'interesse beaucoup !
  • # chmod

    Posté par  . Évalué à 3.

    est-ce que Runtime.getRuntime().exec("chmod +x lenomdubinaire") marche ?

    BeOS le faisait il y a 20 ans !

    • [^] # Re: chmod

      Posté par  . Évalué à 2.

      Merci pour ta réponse. C'est ce que j'essaye, et ca semble résoudre ce probleme là, mais ce n'est vraiment pas élégant du tout.

      Est-ce qu'il y a un équivalent en java pour manipuler facilement les attributs de fichiers ? Ou pour executer un binaire sans le "sortir" du jar ?
      • [^] # Re: chmod

        Posté par  (site web personnel) . Évalué à 0.

        " Merci pour ta réponse. C'est ce que j'essaye, et ca semble résoudre ce probleme là, mais ce n'est vraiment pas élégant du tout."

        Ce que je ne trouve pas élégant c'est d'executer un binaire (qui dépend donc d'un environnement) packagé dans une archive de bytecode java (qui ne dépend pas - à priori - d'un environnement).
        Ca serait interessant de connaitre la raison (contrainte ?) d'un tel choix.
    • [^] # Re: chmod

      Posté par  (site web personnel) . Évalué à 2.

      c'est pas très beau ça...
      car java c'est sensé être portable...
      donc ça ne fonctionnera que sous linux.

      mais je dois dire que je ne vois pas d'autres solutions par contre.
      (donc après tout, ta solution est bien !)
      • [^] # Re: chmod

        Posté par  . Évalué à 3.

        moi j'espere surtout pas voir ca .
        un .jar qui prend le droit d'executer du code/bin sur mon systeme sans que j'en sache rien! pas bô
        • [^] # Re: chmod

          Posté par  . Évalué à 1.

          Manquerait plus qu'un programme Java (en .jar) se permettre d'ouvrir ou d'enregistrer des fichiers sur mon système, et là ça serait vraiement de l'abus...

          ===>[]
          • [^] # Re: chmod

            Posté par  . Évalué à 1.

            Je ne peux pas justifier en quelques lignes le fait de devoir encapsuler un binaire natif dans un jar.
            Par contre et je suis bien décu de constater les critiques sur le fond qui ne résolvent rien au problème :(
            • [^] # Re: chmod

              Posté par  . Évalué à 1.

              en informatique repenser sur le fond le projet quand on est face a un probleme permet bien souvent de progresser.
              Souvent quand on se retrouve face a quelque chose d'insoluble ou de difficile a realiser c'est que des mauvais choix on ete fais et plus tot on les remets en cause, meuilleur sera la solution finale (et aussi moins d'argent elle aura couté a ta boite si tu est salarié)
              • [^] # Re: chmod

                Posté par  . Évalué à 4.

                ce probleme est la conséquence de la solution la plus rationnelle suivant tout un tas de critères que je ne souhaite pas détailler. pour la majorité des cas il est possible de partir from scratch, ici ce n'est clairement pas le cas, et je ne souhaite pas non plus que ce soit le cas. en conséquence de quoi je vais trouver une solution.

                Sinon, le ton est particulier: le "en informatique" est un poil pédant. Je remarque que la certitude qu'a tout un chacun de savoir comment réinventer un monde meilleur (sans mauvais esprit) est particulièrement fréquente chez les amateurs de logiciels libres, et est souvent inversement proportionnelle aux aptitudes de ces "chacuns". Je ne dis pas ca pour toi particulierement, pas de souci, je suis simplement lassé, d'une facon générale, de constater que l'énoncé d'un problème mène souvent à une reformulation qui transfert le problème ailleurs sans le résoudre, pour aboutir a une masturbation intellectuelle qui me chagrine car elle ne profite à personne :)

                A., encore une fois, cette remarque est très générale, à ne pas prendre sur un plan personnel ;)
          • [^] # Re: chmod

            Posté par  . Évalué à 1.

            pour préciser, si j'utilise un code natif c'est que j'ai besoin d'une TRES grande performance+flexibilité, et que pour cette utilisation, la combinaison java+fortran est simplement redoutable :)
            • [^] # Re: chmod

              Posté par  (site web personnel) . Évalué à -2.

              Trop gros, passera pas.
              • [^] # Re: chmod

                Posté par  . Évalué à 1.

                si c'est pour polémiquer, tu devrais aller dans les journaux. ici ce sont les forums. a la source: de vrais problèmes. à la clés, une réponse: tu n'apportes rien, tu te casse.
                • [^] # Re: chmod

                  Posté par  (site web personnel) . Évalué à -2.

                  "ici ce sont les forums. a la source: de vrais problèmes"
                  Ton problème est AMHA plutôt du à un mauvais design applicatif. On ne peut que te trouver des solutions "rustines" à un faux problème.
                  "... à la clés, une réponse"
                  Tu verras sans doute plus tard, qu'à un problème correspond plus d'une solution (comprenne qui pourra).
                  "tu n'apportes rien, tu te casse."
                  Il me semble qu'en te répondant systematiquement à toi meme tu n'apportes rien à la discussion non plus. Manifestement, ici, tout le monde s'accorde à dire que ton problème est la conséquence d'une mauvaise conception, mais cela semble terriblement froisser ton orgueil.

                  Sinon, pour les spécialistes, pourquoi ne pas ouvrir un forum dédicacé au 'Fortran in Java' (car vous aussi, vous pourriez avoir besoin d'une TRES grande performance+flexibilité) ?

                  Allé, bonne chance quand même et désolé de ne pas pouvoir plus t'aider.
                  • [^] # Re: chmod

                    Posté par  . Évalué à 2.

                    juste pour préciser, je suis u peu a cran en ce moment, c'est pour ca que j'ai été un peu brutal dans mes propos et je m'en excuse :)

                    le probleme du "mauvais design applicatif" est justement un énorme avantage de l'application, je ne rentre pas dans les détails, si tu en veux tu peux me contacter directement :) Pour le coup du Fortran+Java, il se trouve que justement, c'est une combinaison gagnante pour ce probleme tres specifique, meme si dans l'absolu c'est une hérésie totale :)

                    En tout cas rien à voir avec mon orgueil, c'est juste que je posais une question sur un point précis qui n'a été abordé que par deux commentaires, les autres se bordant à me sortir des évidences inutiles. Si j'avais voulut trouver une solution + élégante que du code natif dans un jar, c'est cette question que j'aurais posée :)

                    Pour conclure, je m'en sors avec un chmod pour l'instant :)
          • [^] # Re: chmod

            Posté par  . Évalué à 2.

            si ce n'est pas ironique, je crois que tu devrais retourner à ton IDE... ;)
            • [^] # Re: chmod

              Posté par  . Évalué à 1.

              C'était ironique.. d'ailleurs je me demande comment on ne peut pas le prendre comme cela... !!

              Je comprends ton problème et regrette également que souvent, lorsque l'on pose un question sur un problème précis, nombreuses sont les personnes qui disent "ça sert à rien de faire cela", "c'est un faux problème", blablabla. Ces personnes se permettent de juger ce que tu veux faire sans en connaitre les raisons, et c'est très pénible..
        • [^] # Re: chmod

          Posté par  . Évalué à 2.

          en l'occurence, le vrai probleme n'est pas la nature du code mais les droits de celui-ci ;)
  • # Java Native Interface

    Posté par  . Évalué à 3.

    Plutot que d'utiliser un exécutable, tu aurais intérêt à utiliser jni et faire appel à un "shared object" (.so). Je pense que ca serait plus propre, plus performant, et tu n'aurait pas le problème de droits d'exécution...
    • [^] # Re: Java Native Interface

      Posté par  . Évalué à 2.

      merci !

      Un point que je n'ai pas précisé, c'est que je ne cherche pas vraiment à faire converger les 2 codes, mais à minimiser le couplage entre les 2 en permettant à l'un d'executer l'autre, sans autres liens que stdin, stdout et stderr. JNI permet un couplage tres fin, mais ce n'est pas tout a fait ce que je recherche. Cela dit, je vais regarder de ce coté ! :)
  • # permissions

    Posté par  . Évalué à 1.

    avec http://java.sun.com/j2se/1.5.0/docs/api/java/io/FilePermission.html(...) on doit pouvoir changer les permissions non ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.