Что именно содержит файл jar?


как стажер, я использую код компании в своих проектах, и они обычно посылают мне jar файл для работы. Я добавляю его в сборку path in Eclipse и обычно все хорошо и денди.

однако мне стало любопытно узнать, что содержал каждый класс и когда я пытаюсь открыть один из классов в jar файл, он говорит мне, что мне нужен исходный файл.

что это значит? Я пришел из C / C++ фон так jar аналогично уже составлен и все что я вижу-это .h вещи? Или есть фактический код в jar файл, который я использую, зашифрован, поэтому я не могу его прочитать?

Спасибо за все ответы!

Edit:
Спасибо, ребята, я знал, что это было что-то вроде архива, но я был смущен, почему, когда я попытался открыть .class файлы, у меня есть куча случайных символов. Выход был похож, когда я попытался открыть .o file in C so I просто хотел убедиться.
Спасибо!

13 57

13 ответов:

файл JAR на самом деле просто ZIP-файл. Он может содержать что угодно - обычно он содержит скомпилированный код Java (*.класс), но иногда и исходный код Java (*.ява.)

однако Java можно декомпилировать - в случае, если разработчик запутал свой код, вы не получите никаких полезных имен классов/функций/переменных.

однако мне стало любопытно, что содержал каждый класс, и когда я пытаюсь открыть один из классов в файле jar, он говорит мне, что мне нужен исходный файл.

файл jar-это в основном zip-файл, содержащий .файлы классов и потенциально другие ресурсы (и метаданные о самой jar). На самом деле трудно сравнить C С Java, так как байтовый код Java поддерживает намного больше метаданных, чем большинство двоичных форматов, но файл класса и скомпилированный код вместо исходного кода.

Если вы либо открываете файл jar с помощью утилиты zip, либо запускаете jar xf foo.jar вы можете извлечь файлы из него, и посмотреть на них. Обратите внимание, что вы не нужно файл jar для запуска кода Java-загрузчики классов могут загружать данные класса непосредственно из файловой системы или из URL-адресов, а также из файлов jar.

лучший способ понять, что содержит файл jar, выполнив это:

перейти в командную строку и выполнить jar tvf jarfilename.jar

A jar file-это zip-файл с некоторыми дополнительными файлами, содержащими метаданные. (Несмотря на то .расширение jar, оно находится в формате zip, и любые утилиты, которые имеют дело .zip-файлы также могут иметь дело .файл jar.)

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

файлы Jar могут содержать любые файлы, но они обычно содержат файлы классов и файлы конфигурации поддержки (свойства), графики и других файлов данных необходимо для приложения.

файлы классов содержат скомпилированный код Java, который выполняется виртуальной машиной Java.

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

JAR означает Java архив. Это формат файла, основанный на популярном формате ZIP-файла и используется для объединения многих файлов в один. Хотя JAR можно использовать как общий инструмент архивирования, основной мотивацией для его разработки было то, что Java-апплеты и их необходимые компоненты (.файлы классов, изображения и звуки) могут быть загружены в браузер в одной транзакции HTTP, а не открывать новое соединение для каждой части. Это значительно улучшает скорость, с которой апплет может быть загружен на веб-страницу и начать функционировать. Формат JAR также поддерживает сжатие, что уменьшает размер файла и улучшает время загрузки еще больше. Кроме того, отдельные записи в файле JAR могут быть подписаны цифровой подписью автора апплета для аутентификации их происхождения.

файл Jar содержит скомпилированные двоичные классы Java в виде *.class который может быть преобразован в читаемый .java класс, декомпилируя его с помощью некоторого декомпилятора с открытым исходным кодом. Баночка также имеет дополнительный META-INF/MANIFEST.MF который говорит нам, как использовать файл jar - указывает другие файлы jar для загрузки с jar.

JD-GUI - это очень удобный инструмент для просмотра и декомпиляция баночки

A .jar-файл-это сродни .файл EXE. По сути, они оба являются исполняемыми zip-файлами (различные алгоритмы zip).

в файле jar вы увидите папки и файлы классов. Каждый файл класса похож на ваш .файл O, и представляет собой скомпилированный Java-архив.

Если вы хотите увидеть код в файле jar, загрузите декомпилятор java (расположенный здесь:http://java.decompiler.free.fr/?q=jdgui) и А.банку экстрактор (в 7-Zip отлично работает).

просто проверить, если и .java файлы вместо .class файлы. если это так, просто распакуйте jar-файл, импортировать его в Eclipse и создать баночку, хотя затмение. Это сработало для меня.

A .jar-файл содержит скомпилированный код (*.class files) и другие данные/ресурсы, связанные с этим кодом. Это позволяет объединить несколько файлов в один архивный файл. Он также содержит метаданные. Поскольку это zip-файл, он способен сжимать данные, которые вы помещаете в него.

пару вещей, которые я нашел полезными.

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

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

книга OSGi на практике определяет файлы JAR как: "JARs-это архивные файлы, основанные на формате ZIP-файла, позволяет объединить множество файлов в один файл. Как правило, файлы в архиве содержится смесь скомпилированных файлов классов Java и ресурсов файлы, такие как изображения и документы. Кроме того, спецификация определяет стандартное расположение в архиве JAR для метаданных-папка META-INF - и несколько стандартных имен файлов и форматов в пределах этого непосредственно, большинство важным из которых является манифест.Файл MF."

согласно моему пониманию Jar-файл такой же, как Zip, но имеет исполняемые файлы.

Если у вас нет исполняемых файлов в Jar, то это будет то же самое, что и Zip-файл, я имею в виду, зачем идти в Jar.

поскольку Jar-файл имеет исполняемые файлы, они могут быть легко загружены в ваш код и легко переданы другим для его использования.

Jar (Java Archive) содержит группу .файл класса.

1.To создать Jar-файл (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.To извлечь Jar-файл (распаковать файл)

    jar -xvf NameOfJarFile.jar

3.To отображение таблицы содержания

    jar -tvf NameOfJarFile.jar

JAR (Java ARchive) - это формат файла пакета, обычно используемый для объединения многих файлов классов Java и связанных с ними метаданных и ресурсов (текст, изображения и т. д.) в один файл для распространения. Файлы JAR-это архивные файлы, включающие файл манифеста, специфичный для Java. Они построены на формате ZIP и, как правило, имеют .расширение файла jar.