Comment executer un fichier .jar "bloqué" sous Linux

Lsmyg -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'ai essayé de plusieurs façons d'exécuter un fichier
.jar
, normalement exécutable, mais visiblement, il y a un problème.
Voici ce que j'ai testé notamment:

java -jar forge-1.18.1-39.0.20. jar.
Error: Unable to access jarfile forge-1.18.1-39.0.20.


Pouvez-vous m'indiquer que faire ou quelle application installer?
Merci

Configuration: Linux / Firefox 96.0

2 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Bonjour,

    Par rapport aux remarques de jns55:
    • Un fichier jar n'a pas de raison d'avoir de droits en exécution, tu peux donc ignorer cette piste ;
    • Il ne faut pas lancer un fichier
      .jar
      en root ou via
      sudo
      sauf s'il a de bonnes raisons de les demander, par exemple pour installer des fichiers en dehors de ton home (mais à ce stade, je ne pense pas que ce soit le cas).


    Pour lancer un fichier il faut qu'il ait les droits en exécution. Ça n'est généralement pas le cas d'un fichier
    jar
    , qui est lu par
    java
    quand on exécute
    java -jar fichier.jar
    .

    Ensuite, pour que
    java
    sache quel fichier
    .jar
    tu veux lancer, il faut soit passer à java le chemin absolu vers le fichier
    .jar
    , soit passer le chemin relatif qui permet de le retrouver. Note que la touche tabulation permet de compléter pour toi le chemin que tu es en train de taper (donc par exemple, si tu tapes /h tabulation cela devrait écrire /home/, puis si tu rajoutes f tabulation cela devrait taper /home/famille. Si ça ne va pas aussi loin que tu veux, appuie deux fois sur tabulation pour voir entre quoi et quoi il hésite et ajoute quelques lettres pour le débloquer). Avec cette méthode, tu seras certain(e) de taper des chemins corrects.

    Méthode 1 : chemin absolu

    java -jar /home/famille/.minecraft/resourcepacks/forge-1.18.1-39.0.20-installer.jar


    Méthode 2 : chemin relatif

    cd /home/famille/.minecraft/resourcepacks
    java -jar forge-1.18.1-39.0.20-installer.jar


    Bonne chance
    1
    1. Lsmyg
       
      Merci beaucoup ça à bien fonctionné.
      En fait, Java c'est ce qui permet dans tous les cas d'ouvrir un fichier .jar?
      Est-ce que vous pouvez m'expliquer comment ça marche?
      Merci
      0
      1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944 > Lsmyg
         
        En fait, Java c'est ce qui permet dans tous les cas d'ouvrir un fichier .jar?

        Tout à fait : jar = java archive.

        Est-ce que vous pouvez m'expliquer comment ça marche?

        Tu as un aperçu ici (la version anglaise est plus complète). Pour faire simple, c'est une archive zip dans laquelle sont rassemblées les classes.

        Généralement un projet écrit en java implique de nombreuses classes (par exemple dans un jeu vidéo, on pourrait imaginer qu'il y ait une classe Personnage, Monstre, Niveau, etc..). Le développeur les écrit en langage java, et chaque classe correspond à un fichier
        .java
        .

        Chaque classe est ensuite compilée en bytecode grâce à un compilateur java, typiquement
        javac
        (potentiellement au travers d'un logiciel comme Eclipse). Pour chaque fichier .java, on obtient un fichier
        .class
        compilé en bytecode.

        À ce stade le programme est d'ores et déjà exécutable. En effet exécuter un programme en java revient à lancer le bytecode adéquat au travers de la JVM (la machine virtuelle java). Cela se fait en appelant le bon fichier .class via l'exécutable
        java
        .

        Le problème, c'est qu'un projet implique souvent un grand nombre de classe, et on n'a pas envie que l'utilisateur final soit confronté à ces nombreux fichiers, à savoir lequel il doit exécuter au travers de la JVM, etc. Bref c'est peu pratique, et c'est pourquoi avant de redistribuer un programme en java, on les rassemble dans une archive qui va toutes les rassembler et indiquer à java où est le point de départ. Et cette archive, c'est le fameux
        .jar
        .

        Le fichier
        .jar
        offre d'autres avantages. Il peut stocker les modules dont dépend le programme java (ce qui évite ainsi à l'utilisateur final de devoir les installer par lui-même) et être signé (afin que le système d'exploitation de l'utilisateur puisse contrôler que l'archive a été produite par un éditeur de confiance).

        Bonne chance
        0
  2. jns55
     
    Bonjour,

    Commence par te placer dans le répertoire qui contient ton fichier
    .jar

    cd /home/.../
    java -jar forge-1.18.1-39.0.20. jar
    0
    1. Lsmyg
       
      Bonjour voici ce qu'il m'indique:

      /home/famille/.minecraft/resourcepacks/forge-1.18.1-39.0.20-installer.jar
      bash: /home/famille/.minecraft/resourcepacks/forge-1.18.1-39.0.20-installer.jar: Permission non accordée


      Visiblement je n'ai pas la permission ou le statut permettant d'exécuter ce fichier. Que puis-je faire pour y remédier?
      Merci
      0
      1. jns55 > Lsmyg
         
        Depuis ton gestionnaire de fichiers, fais un clic droit sur le nom du fichier, choisis "Propriétés" et regarde dans l'onglet "permissions". Tu verras qui est le propriétaire du fichier, les permissions qui sont accordées et que tu peux modifier en cochant des cases. Si le fichier appartient à root, il faut ouvrir le gestionnaire de fichiers en tant que root pour pouvoir les modifier (ou faire cette modification en ligne de commande dans un terminal root).

        Ou alors lance-le dans un terminal root : possible que si c'est un programme d'installation il ait besoin des privilèges root.
        (soit sudo su soit su suivant ta distro)
        0