Что именно содержит файл jar?
как стажер, я использую код компании в своих проектах, и они обычно посылают мне jar
файл для работы. Я добавляю его в сборку path
in Eclipse
и обычно все хорошо и денди.
однако мне стало любопытно узнать, что содержал каждый класс и когда я пытаюсь открыть один из классов в jar
файл, он говорит мне, что мне нужен исходный файл.
что это значит? Я пришел из C / C++ фон так jar
аналогично уже составлен и все что я вижу-это .h
вещи? Или есть фактический код в jar
файл, который я использую, зашифрован, поэтому я не могу его прочитать?
Спасибо за все ответы!
Edit:
Спасибо, ребята, я знал, что это было что-то вроде архива, но я был смущен, почему, когда я попытался открыть .class
файлы, у меня есть куча случайных символов. Выход был похож, когда я попытался открыть .o
file in C so I просто хотел убедиться.
Спасибо!
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.
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.