97 votes

Que contient exactement un fichier jar ?

En tant que stagiaire, j'utilise le code de l'entreprise dans mes projets et ils m'envoient généralement une jar pour travailler. Je l'ajoute à la compilation path en Eclipse et d'habitude tout va bien et dandy.

Cependant, j'ai eu la curiosité de savoir ce que chaque classe contenait et lorsque j'essaie d'ouvrir une des classes dans le menu de l'application jar il me dit que j'ai besoin d'un fichier source.

Qu'est-ce que cela signifie ? Je viens d'un C/C++ fond ainsi qu'un jar similaire à une version déjà compilée .o et tout ce que je peux voir est le .h des choses ? Ou y a-t-il un code réel dans le jar que j'utilise et qui est crypté pour que je ne puisse pas le lire ?

Merci pour toutes les réponses !

Edit :
Merci, les gars, je savais que c'était une sorte d'archive, mais je ne comprenais pas pourquoi, lorsque j'ai essayé d'ouvrir l'application .class les dossiers, j'ai un tas de personnages aléatoires. Le résultat était similaire lorsque j'ai essayé d'ouvrir un fichier de type .o en C, donc je voulais juste m'en assurer.
Merci !

5voto

Piyush Points 6137

Le fichier Jar contient des classes binaires Java compilées sous la forme de *.class qui peut être converti en texte lisible .java en le décompilant à l'aide d'un décompilateur open source. Le jar possède également une option META-INF/MANIFEST.MF qui nous indique comment utiliser le fichier jar - spécifie d'autres fichiers jar à charger avec le jar.

3voto

bishwas pokharel Points 140

Jar (Java Archive) contient un groupe de fichiers .class.

1. créer un fichier Jar (fichier Zip)

 if one .class (say, Demo.class) then use command jar -cvf NameOfJarFile.jar Demo.class (usually it’s not feasible for only one .class file)

 if more than one .class (say, Demo.class , DemoOne.class) then use command jar -cvf NameOfJarFile.jar Demo.class DemoOne.class

 if all .class is to be group (say, Demo.class , DemoOne.class etc) then use command jar -cvf NameOfJarFile.jar *.class

2. extraire le fichier Jar (fichier Unzip)

    jar -xvf NameOfJarFile.jar

3. afficher la table des matières

    jar -tvf NameOfJarFile.jar

2voto

Tyzoid Points 321

Un fichier .jar est comparable à un fichier .exe. En fait, il s'agit de deux fichiers zip exécutables (algorithmes zip différents).

Dans un fichier jar, vous verrez des dossiers et des fichiers de classe. Chaque fichier de classe est similaire à votre fichier .o, et est une archive java compilée.

Si vous voulez voir le code dans un fichier jar, téléchargez un décompilateur java (situé ici : http://java.decompiler.free.fr/?q=jdgui ) et un extracteur .jar (7zip fonctionne bien).

1voto

Anton Arhipov Points 2626

JD-GUI est un outil très pratique pour parcourir et décompiler les JARs

1voto

Wazza Points 51

Un fichier .jar contient du code compilé (fichiers *.class) et d'autres données/ressources liées à ce code. Il vous permet de regrouper plusieurs fichiers dans un seul fichier d'archive. Il contient également des métadonnées. Comme il s'agit d'un fichier zip, il est capable de compresser les données que vous y mettez.

Deux choses que j'ai trouvées utiles.

http://www.skylit.com/javamethods/faqs/createjar.html

http://docs.oracle.com/javase/tutorial/deployment/jar/basicsindex.html

Le livre OSGi in practice définit les fichiers JAR comme suit : "Les JAR sont des fichiers d'archive basés sur le format de fichier ZIP, permettant de regrouper de nombreux fichiers dans un seul fichier. En général, les fichiers fichiers contenus dans l'archive sont un mélange de fichiers de classes Java compilés et de fichiers fichiers de ressources tels que des images et des documents. En outre, la spécification définit un un emplacement standard dans une archive JAR pour les métadonnées - le dossier META-INF. - ainsi que plusieurs noms et formats de fichiers standard au sein de ce dossier. le plus important d'entre eux est le fichier MANIFEST.MF".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X