Как стажер, я использую код компании в своих проектах, и они обычно присылают мне jar
файл для работы. Я добавляю его в строй path
в Eclipse
и , как правило , все это хорошо и денди.
Однако мне стало любопытно узнать, что содержит каждый класс, и когда я пытаюсь открыть один из классов в jar
файле, он сообщает мне, что мне нужен исходный файл.
Что это значит? У меня опыт работы с C / C ++, поэтому он jar
похож на уже скомпилированный .o
файл, и все, что я вижу, это .h
материал? Или в jar
файле, который я использую, есть настоящий код, который зашифрован, поэтому я не могу его прочитать?
Спасибо за ответы на все вопросы!
Изменить:
спасибо, ребята, я знал, что это что-то вроде архива, но меня смущало, почему, когда я пытался открыть .class
файлы, я получил кучу случайных символов. Результат был похож, когда я пытался открыть .o
файл на C, поэтому я просто хотел убедиться.
Благодарность!
Ответы:
Файл JAR на самом деле является просто файлом ZIP. Он может содержать что угодно - обычно он содержит скомпилированный код Java (* .class), но иногда также исходный код Java (* .java).
Тем не менее, Java может быть декомпилирована - если разработчик запутал свой код, вы не получите никаких полезных имен классов / функций / переменных.
источник
Файл jar - это в основном zip-файл, содержащий файлы .class и, возможно, другие ресурсы (и метаданные о самом банке). На самом деле сложно сравнивать C с Java, поскольку байт-код Java поддерживает намного больше метаданных, чем большинство двоичных форматов, но файл класса - это скомпилированный код, а не исходный код.
Если вы либо откроете файл jar с помощью утилиты zip, либо запустите,
jar xf foo.jar
вы можете извлечь из него файлы и посмотреть на них. Обратите внимание, что вам не нужен файл jar для запуска кода Java - загрузчики классов могут загружать данные классов непосредственно из файловой системы или из URL-адресов, а также из файлов jar.источник
Лучший способ понять, что содержит файл jar, - это выполнить следующее:
Перейдите в командную строку и выполните
jar tvf jarfilename.jar
источник
jar
Файл почтовый файл с некоторыми дополнительными файлами , содержащими метаданные. (Несмотря на расширение .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 ARchive. Это формат файла, основанный на популярном формате файлов ZIP, который используется для объединения множества файлов в один. Хотя JAR можно использовать в качестве общего инструмента для архивирования, основной мотивацией для его разработки было то, что Java-апплеты и их необходимые компоненты (файлы .class, изображения и звуки) могут быть загружены в браузер за одну транзакцию HTTP, а не открываются. новое соединение для каждой детали. Это значительно увеличивает скорость, с которой апплет можно загрузить на веб-страницу и начать работу. Формат JAR также поддерживает сжатие, которое уменьшает размер файла и еще больше сокращает время загрузки. Кроме того, отдельные записи в файле JAR могут быть подписаны цифровой подписью автора апплета для аутентификации их происхождения.
источник
Jar-файл содержит скомпилированные двоичные классы Java, в виде
*.class
которых можно преобразовать в читаемый.java
класс путем декомпиляции с помощью некоторого декомпилятора с открытым исходным кодом. В jar также есть необязательный параметр,META-INF/MANIFEST.MF
который сообщает нам, как использовать файл jar - указывает другие файлы jar для загрузки вместе с jar.источник
Jar (Java Archive) содержит группу файлов .class.
1.Чтобы создать файл 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.Для извлечения файла Jar (разархивировать файл)
3. для отображения оглавления
источник
Файл .jar похож на файл .exe. По сути, они оба являются исполняемыми zip-файлами (разные алгоритмы zip).
В файле jar вы увидите папки и файлы классов. Каждый файл класса похож на ваш файл .o и представляет собой скомпилированный архив java.
Если вы хотите увидеть код в файле jar, загрузите декомпилятор java (находится здесь: http://java.decompiler.free.fr/?q=jdgui ) и экстрактор .jar (7zip отлично работает).
источник
JD-GUI - очень удобный инструмент для просмотра и декомпиляции JAR.
источник
Файл .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 ».
источник
Просто проверьте, есть ли в
aopalliance.jar
файле.java
файлы вместо.class
файлов. если это так, просто извлеките файл jar, импортируйте его в eclipse и создайте банку через eclipse. У меня это сработало.источник
Изучая JAR, я наткнулся на эту ветку, но не смог получить достаточно информации для таких людей, как я, у которых есть опыт работы с .NET, поэтому я добавлю несколько пунктов, которые могут помочь таким людям, как я, с опытом работы с .NET.
Сначала нам нужно определить аналогичную концепцию JAR в .NET, которая является сборкой и сборка имеют много общего с файлами JAR Java.
Итак, сборка - это фундаментальная единица упаковки кода в среде .NET. Сборки являются самодостаточными и обычно содержат промежуточный код из классов компиляции, метаданные о классах и любые другие файлы, необходимые упакованному коду для выполнения своей задачи. Поскольку сборки являются основной единицей упаковки кода, некоторые действия, связанные с взаимодействием с типами, должны выполняться на уровне сборки. Например , предоставление разрешений безопасности, развертывание кода и управление версиями выполняются на уровне сборки.
Файлы Java JAR выполняют аналогичную задачу в Java, но большая часть различий заключается в реализации. Сборки обычно хранятся как EXE или DLL, в то время как файлы JAR хранятся в формате ZIP .
Источник информации -> 5- Сборки
источник