Was genau enthält eine JAR-Datei?

Lesezeit: 5 Minuten

Benutzer-Avatar
Joshualan

Als Praktikant verwende ich in meinen Projekten Firmencodes und sie schicken mir normalerweise eine jar Datei zum Arbeiten. Ich füge es dem Build hinzu path in Eclipse und normalerweise ist alles in Ordnung und gut.

Ich wurde jedoch neugierig, was jede Klasse enthielt und wann ich versuche, eine der Klassen in der zu öffnen jar Datei, sagt es mir, dass ich eine Quelldatei benötige.

Was bedeutet das? Ich komme aus A C/C++ Hintergrund so ist a jar ähnlich einer bereits kompilierten .o Datei und alles, was ich sehen kann, ist die .h Sachen? Oder gibt es tatsächlich Code in der jar Datei, die ich verwende, die verschlüsselt ist, sodass ich sie nicht lesen kann?

Danke für alle Antworten!

Bearbeiten:
Danke, Leute, ich wusste, dass es eine Art Archiv ist, aber ich war verwirrt, warum, als ich versuchte, das zu öffnen .class Dateien habe ich ein paar zufällige Zeichen. Die Ausgabe war ähnlich, als ich versuchte, a zu öffnen .o Datei in C, also wollte ich nur sichergehen.
Vielen Dank!

  • JAR-Dateiformat

    – mellamokb

    22. August 2012 um 18:32 Uhr


  • en.wikipedia.org/wiki/JAR_(Dateiformat)

    – Dancardle

    22. August 2012 um 18:34 Uhr


  • @Blue Moon: Das Lustige ist, Google führt mich hierher. :p

    – Benutzer1036719

    25. Februar 2014 um 20:40 Uhr

  • @ user1036719 Obwohl es gut ist, dass Sie hier eine Antwort gefunden haben, kommt noch ein weiterer Link Vor Dies. Und das ist nicht wirklich eine Programmierfrage, die auf SO gefördert werden muss. Ich habe jedoch nicht abgelehnt oder geschlossen.

    – PP

    25. Februar 2014 um 21:00 Uhr


Eine JAR-Datei ist eigentlich nur eine ZIP-Datei. Es kann alles enthalten – normalerweise enthält es kompilierten Java-Code (*.class), manchmal aber auch Java-Quellcode (*.java).

Java kann jedoch dekompiliert werden – falls der Entwickler seinen Code verschleiert hat, erhalten Sie jedoch keine nützlichen Klassen- / Funktions- / Variablennamen.

Ich bin jedoch neugierig geworden, was jede Klasse enthält, und wenn ich versuche, eine der Klassen in der JAR-Datei zu öffnen, wird mir mitgeteilt, dass ich eine Quelldatei benötige.

Eine JAR-Datei ist im Grunde eine ZIP-Datei, die .class-Dateien und möglicherweise andere Ressourcen (und Metadaten über die JAR-Datei selbst) enthält. Es ist wirklich schwer, C mit Java zu vergleichen, da Java-Bytecode viel mehr Metadaten verwaltet als die meisten Binärformate – außer der Klassendatei ist Kompilierter Code statt Quellcode.

Wenn Sie die JAR-Datei entweder mit einem ZIP-Dienstprogramm öffnen oder ausführen jar xf foo.jar Sie können die Dateien daraus extrahieren und sie sich ansehen. Beachten Sie, dass Sie dies nicht tun brauchen eine JAR-Datei zum Ausführen von Java-Code – Classloader können Klassendaten direkt aus dem Dateisystem oder von URLs sowie aus JAR-Dateien laden.

  • Danke, ich wusste, dass es eine Art Archiv war, da ich es entpacken konnte, aber ich war verwirrt, warum keine der .class-Dateien lesbaren Text enthielt. Danke für die Erklärung, ich denke, eine .class ist eine Art .o-Datei.

    – Joshualan

    22. August 2012 um 18:45 Uhr

Der beste Weg, um zu verstehen, was die JAR-Datei enthält, besteht darin, Folgendes auszuführen:

Gehen Sie zur Befehlszeile und führen Sie sie aus jar tvf jarfilename.jar

Benutzer-Avatar
der Glauber

EIN jar Datei ist eine ZIP-Datei mit einigen zusätzlichen Dateien, die Metadaten enthalten. (Trotz der Erweiterung .jar ist es im Zip-Format, und alle Dienstprogramme, die mit .zip-Dateien umgehen, können auch mit .jar-Dateien umgehen.)

http://docs.oracle.com/javase/8/docs/technotes/guides/jar/index.html

Jar-Dateien können jede Art von Dateien enthalten, aber sie enthalten normalerweise Klassendateien und unterstützende Konfigurationsdateien (Eigenschaften), Grafiken und andere Datendateien, die von der Anwendung benötigt werden.

Klassendateien enthalten kompilierten Java-Code, der von der Java Virtual Machine ausführbar ist.

http://en.wikipedia.org/wiki/Java_class_file

JAR steht für Java ARchive. Es handelt sich um ein Dateiformat, das auf dem beliebten ZIP-Dateiformat basiert und zum Zusammenfassen vieler Dateien zu einer Datei verwendet wird. Obwohl JAR als allgemeines Archivierungstool verwendet werden kann, war die Hauptmotivation für seine Entwicklung, dass Java-Applets und ihre erforderlichen Komponenten (.class-Dateien, Bilder und Sounds) in einer einzigen HTTP-Transaktion in einen Browser heruntergeladen werden können, anstatt sie zu öffnen eine neue Verbindung für jedes Stück. Dies verbessert die Geschwindigkeit, mit der ein Applet auf eine Webseite geladen werden kann und zu funktionieren beginnt, erheblich. Das JAR-Format unterstützt auch die Komprimierung, wodurch die Dateigröße reduziert und die Downloadzeit noch weiter verkürzt wird. Zusätzlich können einzelne Einträge in einer JAR-Datei vom Applet-Autor digital signiert werden, um ihren Ursprung zu authentifizieren.

Benutzer-Avatar
Piyush Mattoo

Die JAR-Datei enthält kompilierte Java-Binärklassen in Form von *.class die in lesbar umgewandelt werden kann .java Klasse, indem Sie sie mit einem Open-Source-Decompiler dekompilieren. Das Glas hat auch eine optionale META-INF/MANIFEST.MF die uns sagt, wie die JAR-Datei verwendet werden soll – gibt andere JAR-Dateien an, die mit der JAR-Datei geladen werden sollen.

Benutzer-Avatar
bishwas pokharel

Jar (Java-Archiv) enthält eine Gruppe von .class-Dateien.

1. So erstellen Sie eine Jar-Datei (Zip-Datei)

 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. Jar-Datei extrahieren (Datei entpacken)

    jar -xvf NameOfJarFile.jar

3.Zum Anzeigen des Inhaltsverzeichnisses

    jar -tvf NameOfJarFile.jar

1284120cookie-checkWas genau enthält eine JAR-Datei?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy