Comment puis-je faire un fichier exécutable .jar?

11

Je suis en train d'exécuter une application jar sous Ubuntu, donc j'ai installé Java OpenJDK 7 Runtime, mais quand j'ouvrir cette application, je reçu ce message:

Le fichier « /home/aimad/Programms/jMerise/JMerise.jar » est pas marqué comme exécutable. Si cela a été téléchargé ou copié à partir d'une source non fiable, il peut être dangereux de courir. Pour plus de détails, lisez le bit exécutable.

Aimad majdou
la source

Réponses:

17

Vous pouvez toujours exécuter un fichier jar en faisant java -jar JMerise.jar.

Cependant, pour rendre le fichier jar exécutable lui - même, vous devez définir le bit exécutable, comme les conseils de message. chmod +x /home/aimad/Programms/jMerise/JMerise.jaratteindrons cet objectif .

Après que vous pouvez faire ./JMerise.jarpour l' exécuter.

man chmod vous fournira des informations sur la façon dont fonctionne chmod.

Voir aussi: https://wiki.ubuntu.com/Security/ExecutableBit

Gary
la source
7

Cliquez avec le bouton droit sur le fichier, cliquez sur les propriétés, puis accédez à l'onglet Autorisations et cochez la case "Autoriser l'exécution de ce fichier en tant que programme".

entrez la description de l'image ici

RolandiXor
la source
Et si je ne peux pas cocher la case ci-dessus, pour "autoriser l'exécution du fichier en tant que programme"? Je le vérifie, mais un instant plus tard, il est automatiquement désactivé!
user961627
@ user961627 Vous avez probablement le fichier .jar stocké sur une partition qui ne prend pas en charge le bit exécutable. Voir Impossible de rendre un fichier exécutable pour plus de détails.
wjandrea
4

Vous devez d'abord vous assurer que vous disposez d'un environnement d'exécution Java approprié sur votre système. Ubuntu a openjdk dans le repo officiel qui est 99,99% combattable avec Oracle Java, pour l'installer tapez:

sudo apt-get install openjdk-7-jre

Ensuite , créez un fichier appelé java-jar-launcher.desktopdans ~/.local/share/applicationset mettre le contenu suivant en elle:

[Desktop Entry]
Type=Application
Name=Java Application Launcher
Icon=java
Exec=/usr/bin/java -jar %U
Categories=Application;Java
Terminal=False

Ajoutez ensuite la ligne suivante ~/.local/share/applications/mimeapps.list:

application/x-java-archive=java-jar-launcher.desktop;

Maintenant, vous devriez pouvoir simplement double-cliquer sur les fichiers jar pour les lancer, si rien ne se passe, faites un clic droit sur un fichier jar, sélectionnez les propriétés puis allez dans l'onglet "Ouvrir avec" et là vous devriez voir "Java Application Launcher", sélectionnez cela .

Cette méthode est préférable (à mon humble avis) car de cette façon, vous ne donnez pas les autorisations d'exécution aux fichiers jar qui peuvent être potentiellement dangereux. Cette méthode ne fonctionne que dans un environnement graphique et nécessite que l'utilisateur double-clique manuellement sur le fichier.

tusharkant15
la source
2

Puisque vous exécutez votre application jar avec, java -jar application.jarcela signifie que java est sur votre chemin. Vous avez besoin de deux choses simples: 1) ajoutez un interpréteur (qui est apparemment #!java -jar) dans la première ligne de votre fichier jar comme vous le faites avec vos scripts shell: echo '#!java -jar' > app.jar cat application.jar >> app.jar mv app.jar application.jar

Si vous récupérez le contenu de votre fichier jar, vous verrez qu'il commence par ex.: #!java -jar PK ^lN BOOT-INF/PK ..... ..... 2) ajoutez l'attribut execute par chmod +x application.jar Maintenant, vous pouvez le "lancer automatiquement" via ./application.jar.

gość
la source
0

Si l' exécution d' un fichier .jar à partir des travaux de la ligne de commande ( java -jar myFile.jar), mais un double-clic dans l'interface graphique ne fonctionne pas, et si sudo chmod +x myFile.jarapparaît pour réussir mais vous ne pouvez toujours pas ouvert avec double-clic, et si un clic droit sur le .jar fichier> Propriétés> Autorisations> "Autoriser l'exécution du fichier en tant que programme" ne fonctionne pas (c'est-à-dire que la case à cocher revient juste après avoir cliqué dessus), alors le fichier .jar se trouve probablement sur un système de fichiers NTFS, ce qui n'autorise pas l'exécution des autorisations sur par fichier. (Vous pouvez avoir ce problème si vous double démarrage, par exemple, et une partition NTFS partagée entre Ubuntu et Windows).

Création d' un lanceur (comme @ tusharkant15 décrit) fonctionnera parce que derrière les scènes que vous exécutiez /usr/bin/java, pas le fichier .jar lui - même. Déplacement du fichier .jar à un autre système de fichiers qui ne sont pas NTFS également.

drammock
la source