Файл с расширением .jar

Файл JAR — это архив Java, используемый средой Java Runtime Environment (JRE) для выполнения приложений, которые написаны на языке Java. Архив упакован с помощью сжатия zip и включает файлы классов (CLASS), а также может хранить ресурсы приложения и файл манифеста (MANIFEST.MF). Файлы JAR могут являться библиотеками классов, частью приложений или самостоятельными программами. Для создания архивов Java используется специальное программное обеспечение, например, среда разработки NetBeans IDE.
Как, чем открыть файл .jar?

















Инструкция — как выбрать программу из списка, скачать и использовать ее для открытия файла
Для более точного определения формата и программ для открытия файла используйте функцию определения формата файла по расширению и по данным (заголовку) файла.
Программы
- Проигрыватели аудио/видео
- Редакторы изображений
- Текстовые редакторы
- Web-браузеры
- Архиваторы
- Работа с дисками
- Офисные программы/пакеты
Файлы
- Аудио-файлы
- Видео-файлы
- Рисунки, изображения
- Растровые изображения
- Векторные изображения
- 3D-модели, изображения
- CAD-файлы
- Текст, документы
- Электронные таблицы
- Электронные книги
- Архивы, сжатые файлы
- Исполняемые файлы
- Интернет, web файлы
- Файлы игр
- Образы дисков
- Системные файлы
- Файлы шрифтов
- Зашифрованные файлы
- Размеченные документы
- Файлы резервных копий
- Файлы данных
- Файлы баз данных
- Скрипты, исходный код
- Подключаемые модули
- Файлы настроек
- Географические файлы
- Другие файлы
Что такое jar файл и зачем он нужен?
Вопрос такой что такое jar файл и зачем он нужен на практике. Ведь если есть файл java, есть файл class который уже переведен в байт-код, зачем тогда jar файл? Какая его функция и можно ли без него обойтись?
Отслеживать
14.2k 1 1 золотой знак 21 21 серебряный знак 31 31 бронзовый знак
задан 20 июн 2017 в 7:19
Виталий Vit Виталий Vit
179 1 1 золотой знак 1 1 серебряный знак 7 7 бронзовых знаков
А если в вашем приложении 200 классов?
20 июн 2017 в 7:20
Это аналог EXE.
23 июн 2017 в 6:09
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
JAR-файл — это Java-архив (Java ARchive). Это простой архивный файл, сжатый (иногда с нулевой компрессией) по алгоритму zip.
Он был создан для удобства распространения программ, написанных на Java. Так как обычная программа содержит сотни, тысячи, а иногда и миллионы файлов. Файл может содержать:
- файл манифеста META-INF/MANIFEST.MF
- java-файлы (исходный код)
- class-файлы
- файлы, необходимые для работы программы: картинки, файлы с настройками и прочее (ресурсы)
- электронные подписи, которые позволяют защитить программу от модификации
Манифест — это текстовый файл формата ключ: значение ; он содержит описание jar-файла. В нем могут быть следующие ключи:
- Manifest-Version — версия манифеста
- Main-Class — имя главного класса (должен содержать метод main ), такой jar-файл можно запустить как обычный исполняемый файл
- Class-Path — позволяет указать CLASSPATH , который необходим для полноценной работы программы
- SHA-Digest — контрольная сумма определенного файла внутри архива
Кроме jar, также существуют другие архивы, связанные с Java:
- WAR (Web Application aRchive) — содержит в себе приложение для веба
- EAR (Enterprise Application aRchive) — содержит в себе энтерпрайз приложение (обычно из нескольких модулей)
- APK (Android aPplication pacKage) — содержит в себе приложение для Android
Можно ли обойтись без?
В принципе, можно, все что вам необходимо — это всегда точно копировать структуру вашего приложения. То есть все класс-файлы и файлы с ресурсами должны располагаться в правильных директориях. Переменная CLASSPATH должна содержать пути ко всем зависимостям. Если эти условия соблюдены, то ваше приложение будет работать без упаковки в jar.
P.S. В переводе с английского, jar — означает банка, стеклянный или керамический цилиндрический контейнер с широким горлом, предназначенный для хранения еды (обычно). Кофе часто хранят в банках, так что тут игра слов: банка с кофе — банка с java-классами.
Jar что это
В обоих случаях (IDE или утилита jar) в архиве будет создаваться файл MANIFEST.MF. Как я уже писал — есть смысл почитать о дополнительных свойствах JAR-файлов. Т.к. в документации все очень неплохо написано, не буду заниматься переводом. Так что перейдем к следующему пункту нашего путешествия по JAR-файлам.
Подключение готовых JAR-файлов
Командная строка
Итак, я сказал, что основная функция JAR — содержать набор классов в виде class-файлов. Теперь нам надо понять, как подключать JAR-файлы к запускаемому классу, чтобы запускаемый класс мог использовать классы из JAR-файла.
Как вы уже хорошо знаете, запуск программы на Java включает запуск JVM (для Windows это файл java.exe, для Unix — java) и передача ей из командной строки имени класса, который вы собираетесь запускать. Например, для запуска класса First в пакете edu.javacourse.test надо в каталоге, внутри которого находится каталог edu/javacourse/test набрать такую команду:
java edu . javacourse . test . First
Как видите, в качестве аргумента мы передали полное имя класса, который собираемся запускать. JVM кроме имени класса принимает достаточно много параметров, которые позволяют конфигурировать те или иные свойства JVM. В этой статье мы разберем очень важный элемент — CLASSPATH — который как раз и используется для подключения JAR-файлов.
Сейчас мы проделаем полный цикл создания JAR-файла и его подключения без использования IDE — я очень трепетно отношусь к умению программиста пользоваться командной строкой. Во-первых, это показывает, что вы действительно понимаете суть, во-вторых — этот навык ну просто очень полезен. Например, в том же Unix/Linux очень большое количество работы гораздо удобнее делать в командной строке, да и некоторые продукты содержат утилиты, запускаемые из командной строки. Так что займемся.
Создадим каталог JavaLesson (в принципе мы его уже создавали в разделе Основные шаги. В этом каталоге создадим стуктуру каталогов JarLib/edu/javacourse/jar. С помощью текстового редактора создадим файл SayHello.java
package edu . javacourse . jar ;
public class SayHello
public void sayHello ( ) <
System . out . println ( "HELLO" ) ;
Структура наших каталогов должна выглядеть вот так:
JavaLesson
javacourse
SayHello . java
Теперь время за командной строкой. Запускаем команду «cmd» (если не помните — смотрим раздел Основные шаги). Переходим в каталог JavaLesson/JarLib и в нем сначала компилируем наш файл SayHello.java вот такой командой
javac edu / javacourse / jar / SayHello . java
После успешной компиляции создаем JAR-файл с помощью команды
jar cf say . jar edu / javacourse / jar / SayHello . class
Если у вас все получилось, то в каталоге JavaLesson/JarLib должен появится файл say.jar.
Теперь напишем небольшой класс, который будет использовать наш класс SayHello. ВАЖНО . Для «чистоты эксперимента» создадим этот класс в каталоге JavaLesson. Предлагаю создать класс без использования пакетов (хотя это не должно быть правилом — в реальных проектах создавать классы без пакетов не надо). Вот наш файл UseHello.java, который будет находится в каталоге JavaLesson
import edu . javacourse . jar . SayHello ;
public class UseHello
public static void main ( String [ ] args ) <
SayHello sh = new SayHello ( ) ;
sh . sayHello ( ) ;
Обратите внимание на первую строчку — в ней мы импортируем класс SayHello. В методе main мы создаем объект и вызываем его метод. Структура наших каталогов должна выглядеть вот так:
JavaLesson
javacourse
SayHello . java
UseHello . java
Теперь нам надо скомпилировать наш замечательный класс. Пробуем команду javac. ВНИМАНИЕ . Мы находимся в каталоге JavaLesson.
javac UseHello . java
И мы получаем ошибку:
C : \ JavaLesson > javac UseHello . java
UseHello . java : 1 : error : package edu . javacourse . jar does not exist
import edu . javacourse . jar . SayHello ;
UseHello . java : 6 : error : cannot find symbol
SayHello sh = new SayHello ( ) ;
symbol : class SayHello
location : class UseHello
UseHello . java : 6 : error : cannot find symbol
SayHello sh = new SayHello ( ) ;
symbol : class SayHello
location : class UseHello
Сообщение в данном случае достаточно информативное — «UseHello.java:1: error: package edu.javacourse.jar does not exist» и «UseHello.java:6: error: cannot find symbol». Мы же не подключали наш класс SayHello — вот компилятор и не знает, откуда его брать и вообще откуда такой пакет/класс — edu.javacourse.jar.SayHello. Ну что же — перефразируя классику — «Ваше слово, товарищ CLASSPATH».
Очевидно, что нам надо компилятору подсказать, что он должен использовать не только те JAR-файлы, которые у него уже есть — тот же rt.jar — но и наш JAR-файл. Делается это с помощью специальной опции при запуске компилятора.
javac — cp JarLib / say . jar UseHello . java
В этой команде мы добавили строку -cp JarLib/say.jar. Часть -cp говорит, что за ней должен идти список JAR-файлов, которые содержат нужные классы. Список может включать несколько файлов, разделенных для Windows знаком «;», для Unix/Linux — «:». Например, если мне надо указать два файла — say1.jar и say2.jar — находящихся в каталоге C:/Anton/Libraries, то команда (для Windows) выглядела бы так:
javac — cp C : / Anton / Libraries / say1 . jar ; C : / Anton / Libraries / say2 . jar UseHello . java
Кстати, «-cp» — сокращенно от classpath — раньше надо было писать именно так, да и сейчас тоже можно.
javac — classpath C : / Anton / Libraries / say1 . jar ; C : / Anton / Libraries / say2 . jar UseHello . java
Также важно отметить, что в CLASSPATH можно включать не только JAR-файлы — туда можно включать путь до каталога с файлами .class (опять же — их может быть указано несколько штук). Если бы мы не создавали JAR-файл say.jar, а использовали скомпилированный файл SayHello.class из каталога JarLib, то команда выглядела бы вот так:
java — cp JarLib UseHello . java
Вы можете спросить — почему мы указали путь только до JarLib, а не полностью каталог с файлом SayHello.class. Дело в том, что т.к. наш файл содержится в пакете, то нам надо указать путь именно до пакета, а он находится в каталоге JarLib. Можно указать полный (а не относительный) путь — вот так:
javac — cp C : / JavaLesson / JarLib UseHello . java
Ну что же, скомпилировать нам удалось, самое время запускать наше замечательный класс. Скорее всего, вы уже догадываетесь, что при запуске нам тоже надо указать наш файл say.jar и выглядеть команда должна как-то так. ВНИМАНИЕ . Мы находимся в каталоге JavaLesson.
java — cp JarLib / say . jar UseHello
Но при запуске этой программы нас постигает неудача. Вот такое сообщение выдает JVM:
Error : Could not find or load main class UseHello
JVM не может найти наш класс. Как это, вот же он, прямо в этой директории ? Хитрость в том, что когда вы указываете CLASSPATH в командной строке, то JVM берет классы ТОЛЬКО из этих файлов/каталогов. А наш файл с классом UseHello находится в ТЕКУЩЕМ каталоге, который НЕ УКАЗАН. Вот такая вот эпидерсия. Нам надо указать JVM, чтобы она брала файлы и из текущего каталога тоже. Делается это так — в CLASSPATH надо указать символ «.». Это и будет текущий каталог. Наща команда должна выглядеть вот так:
java — cp . ; JarLib / say . jar UseHello
Ну что же — теперь все должно получится и мы увидим надпись HELLO.
Фокус с CLASSPATH может сыграть с вами достаточно злую шутку. Дело в том, что JVM использует переменную среды, которая так и называется «CLASSPATH». Для Windows она устанавливается точно так же как переменные «PATH» и «JAVA_HOME» — мы делали это в разделе Установка JDK. В этой переменной указывается набор JAR-файлов и каталогов, которые JVM будет использовать в случае, если вы НЕ указываете CLASSPATH при запуске своей программы.
Некоторые программы при своей установке создают (или обновляют) переменную среды «CLASSPATH» и могут даже вам ничего не сказать. И вот вы из командной строки запускаете свой класс, а JVM его НЕ ВИДИТ. Потому? что она dpzkf переменную «CLASSPATH» и в ней нет символа «.». В этом случае происходит то, что мы уже видели — файлы из текущего каталога не загружаются. Так что будьте внимательны.
Подключение JAR-библиотек в IDE NetBeans

Т.к. в данном курсе я использую для демонстрации NetBeans, то наверно будет неправильно не показать, как подлкючать JAR в этой среде. Как я уже упоминал, если появится время на другие IDE, я буду писать их в этой же статье. Но не думаю, что это будет в ближащее время.
Если вы посмотрите служебное окно «Projects», которое обычно находится слева, то вы в нем вы можете увидеть структуру вашего проекта, которая содержит раздел «Libraries». Я создал два проекта SayHello и UseHello
В открытом файле UseHello.java в самой первой строке видно, что компилятор выдает в ней ошибку — как мы уже знаем, она говорит об отсутствии нужного класса. В принципе IDE позволяют подключать не только готовые JAR-файлы, но и проекты, но мы не будем использовать эту функцию (в данном случае специально). Чтобы подключить библиотеку из проекта SayHello нам для начала надо собрать этот проект через команду «Build». Результат можем увидеть в каталоге dist. В нем мы можем увидеть файл SayHello.jar. Предвидя вопрос — а можно поменять имя файла — для того, чтобы файл создавался с другим именем, надо исправлять конфигурационный файл nbproject/project.properties. Найти в нем опцию с именем dist.jar И поменять имя файла. В общем не очень удобно. Так что я обычно этого не делаю.
Теперь нам надо подключить готовый JAR-файл к нашему второму проекту UseHello. Сделать это можно несколькими способами.
- Щелкнуть правой кнопкой мышки на пункте «Libraries» в структуре проекта и в нем выбрать пункт «Add JAR/Folder». После выбора файла его можно будет видеть под веткой «Libraries»
- Целкнуть правой кнопкой мышки на проекте UseHello в окне «Projects» и в выпадающем меню выбрать пункт (обычно самый нижний) «Properties». В открывшемся диалоговом окне выбрать слева пункт «Libraries» и в закладке «Compile» использовать кнопку «Add JAR/Folder».
Также предлагаю заглянуть на закладку «Run». В нем можно увидеть, что при запуске будет подключаться те библиотеки, которые подключаются при компиляции исходников («Classpath for Compiling Source»). 
На этом можно закруглиться, хотя конечно же процесс познания бесконечен и вам наверняка встретится еще много интересной информации по использованию и созданию jar-файлов.
Исходный код для проектов под NetBeans можно скачать здесь. Библиотеку в них надо подключить самостоятельно. Так что можете потренироваться. Удачи.
И теперь нас ждет следующая статья: Многопоточность — первые шаги.
Файл формата JAR — что это?
Файл JAR представляет из себя архив Java, являющийся видом обычного ZIP-архива, содержащего определенную часть данных с элементами языка программирования Java. Для того, чтобы реализовать JAR файл в качестве исполняемого, он должен содержать файл MANIFEST.MF, помещенный в каталог META-INF, где будет указан главный программный класс. Данный класс должен хранить метод main.
Посмотреть содержимое Java Archive можно при помощи различных архиваторов, поддерживающих ZIP-технологию сжатия. Достаточно часто, формат JAR несет в себе разнообразные игры, программы и приложения для мобильных устройств, открыть файл возможно и на пользовательском компьютере, однако для этого потребуется наличие эмулятора приложений Java, к примеру MidpX. Стоит отметить, что возможна и конвертация формата JAR в расширение файла EXE при помощи утилиты JAR2EXE Converter.
Файл .jar может содержать определенные дополнения, а также темы для Mozilla Firefox, Thunderbird, SeaMonkey и Sunbird. Стоит отметить, что .jar файл можно встретить вместе с файлом JAD с идентичным именем, такой формат файла будет хранить всю необходимую информацию, которая применяется при установке того или иного приложения.
Открыть JAR в системе Windows, можно при помощи Java Runtime Environment. Среди распространенных архиваторов, способных открыть файл JAR, выделяют WinRAR, а также PowerArchiver и Corel WinZip. Запускают JAR формат и веб-браузеры, главным условием для корректной работы, является поддержка Java. Файл расширением JAR пользуется особой популярностью среди программистов, пишущих мини-программы на языке Java.
![]()
Программы для работы с JAR в Windows
Java Development Kit (JDK)
Oracle Java Runtime Environment
![]()
Mac
Corel WinZip Mac
Oracle Java Runtime Environment
![]()
Android
File Viewer for Android
![]()
Linux
Eclipse for Linux
Решение проблем с файлами JAR
Наиболее распространенная проблема — файл не открывается. Мы подготовили набор программ, с помощью которых вы гарантированно сможете открыть нужный файл в вашей операционной системе.
Иногда просто открыть файл — недостаточно. Если вам нужно его отредактировать — скачайте одну из бесплатных программ:
Если вам необходимо создать файл «с нуля» воспользуйтесь одной из программ с нужным функционалом. Вы найдете несколько вариантов программ для различных платформ по ссылке ниже.
Видео форматы
Аудио форматы
Электронные книги
Текстовые форматы
Дисковые образы
Табличные данные
Растровые изображения
Векторные изображения
Резервное копирование
Raw
Сжатые файлы
Файлы данных
Базы
3D Изображения
CAD файлы
Файлы разработчиков
Зашифрованные файлы
Исполняемые форматы
Шрифты
Файлы игр
GIS, карты
Другие расширения
Форматы макетов
Форматы плагинов
Файлы настроек
Системные файлы
Веб форматы