web-dev-qa-db-fra.com

Comment est-il possible que je puisse exécuter un fichier JAR depuis un shell?

J'ai toujours pensé que seuls les exécutables sous UNIX/Linux sont des fichiers ELF- et des scripts Shell. Mais j’ai trouvé qu’il est possible d’utiliser uniquement $ ./file.jar au lieu de $ Java -jar file.jar.

Comment les fichiers JAR- sont-ils spéciaux? Existe-t-il d'autres exemples de ce comportement? Puis-je créer mon propre type de fichier qui ne peut être exécuté que par son nom/chemin?

2
lukasrozs

En effet, Ubuntu prend en charge le module de noyau binfmt_misc et le type jar est activé. voir /proc/sys/fs/binfmt_misc/jar

C'est très ancien (depuis le noyau 1.03). Voir plus d'informations ici: https://stackoverflow.com/questions/1667830/running-a-jar-file-without-directly-calling-Java

D'autres exemples sont python et wine, oui, si vous apprenez comment fonctionne binfmt_misc, vous pouvez également créer vos propres types.

4
niry