Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

Файл A jar представляет собой 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

Ответ 5

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

Ответ 6

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

Ответ 7

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

Ответ 8

Файл .jar сродни файлу .exe. По сути, они оба исполняемые zip файлы (разные zip-алгоритмы).

В файле jar вы увидите папки и файлы классов. Каждый файл класса похож на ваш .o файл и является скомпилированным java-архивом.

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

Ответ 9

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

Ответ 10

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

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

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

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

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

Ответ 11

В соответствии с моим пониманием Jar файл аналогичен Zip, но имеет исполняемые файлы.

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

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

Ответ 12

Jar (Архив Java) содержит группу файлов .class.

1.Для создания файла Jar (Zip File)

 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 (распаковать файл)

    jar -xvf NameOfJarFile.jar

3. Чтобы отобразить таблицу содержимого

    jar -tvf NameOfJarFile.jar