Разархивация и запуск файлов JAR

Содержание

Разархивация и запуск файлов JAR

Разархивация и запуск файлов JAR

JAR (Java Archive File) – формат архива, в котором хранятся элементы программы, написанной на языке Java. Чаще всего файлы с таким расширением являются мобильными играми и приложениями. На компьютере можно просмотреть содержимое такого архива и/или попытаться запустить JAR как приложение.

Способы открытия JAR-архива

Для начала рассмотрим несколько программ для открытия архива JAR. Так можно убедиться, что в нём содержится всё необходимое для запуска этого приложения, а также внести требуемые изменения.

Способ 1: WinRAR

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

Скачать WinRAR

  1. Разверните вкладку «Файл» и нажмите «Открыть архив» (Ctrl+O).
  2. Перейдите в место хранения JAR, выделите этот файл и нажмите кнопку «Открыть».
  3. В окне WinRAR отобразятся все файлы этого архива.

Обратите внимание на наличие папки «META-INF» и файла «MANIFEST.MF», который должен храниться в ней. Это позволит реализовать файл JAR в качестве исполняемого.

Найти и открыть нужный архив можно и через встроенный обозреватель файлов WinRAR.

Если с содержимым архива планируется дальнейшая работа, то потребуется разархивация.

Подробнее: Как разархивировать файлы через WinRAR

Способ 2: 7-Zip

Поддержка расширения JAR предусмотрена и в архиваторе 7-Zip.

Скачать 7-Zip

  1. Нужный архив можно найти прямо в окне программы. Кликните по нему правой кнопкой и нажмите «Открыть».
  2. Содержимое JAR будет доступно для просмотра и редактирования.

Способ 3: Total Commander

Альтернативой упомянутым программам может стать файловый менеджер Total Commander. Т.к. его функционал включает работу с архивами, открыть JAR-файл будет несложно.

Скачать Total Commander

  1. Укажите диск, где расположен JAR.
  2. Перейдите в директорию с архивом и дважды кликните по нему.
  3. Файлы архива будут доступны для просмотра.

Способы запуска JAR на компьютере

При необходимости запустить приложение или игру JAR понадобится один из специальных эмуляторов.

Способ 1: KEmulator

Программа KEmulator – это продвинутый Java-эмулятор, позволяющий произвести настройку всевозможных параметров запуска приложения.

Загрузить программу KEmulator

  1. Нажмите «Файл» и выберите пункт «Загрузить jar».
  2. Найдите и откройте нужный JAR.
  3. Или перенесите этот файл окно программы.

  4. Через некоторое время приложение будет запущено. В нашем случае это мобильная версия Opera Mini.

На мобильных телефонах управление осуществлялось с помощью клавиатуры. В KEmulator можно включить её виртуальный аналог: нажмите «Справка» и выберите пункт «Клавиатура».

Выглядеть это будет так:

При желании в настройках программы Вы сможете задать соответствия клавиш телефона клавишам компьютера.

Обратите внимание, что в папке с JAR появится файл «kemulator.cfg», в котором прописаны параметры работы этого приложения. Если его удалить, то все настройки и сохранения (если речь идёт об игре) удалятся.

Способ 2: MidpX

Программа MidpX нет так функциональна, как KEmulator, но со своей задачей справляется.

Загрузить программу MidpX

После установки все файлы JAR будут ассоциироваться с MidpX. Это можно понять по изменившейся иконке:

Дважды кликните по ней и приложение будет запущено. При этом виртуальная клавиатура уже интегрирована в интерфейс программы, однако настроить управление с клавиатуры ПК тут нельзя.

Способ 3: Sjboy Emulator

Ещё один простой вариант для запуска JAR – это Sjboy Emulator. его особенность заключается в возможности выбора скинов.

Загрузить программу Sjboy Emulator

  1. Откройте контекстное меню JAR-файла.
  2. Наведите курсор на «Открыть с помощью».
  3. Выберите пункт «Open With SjBoy Emulator».

Клавиатура тут также интегрирована.

Итак, мы выяснили, что JAR можно открыть не только как обычный архив, но и запустить на компьютере через Java-эмулятор.

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


Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

Помогла ли вам эта статья?

ДА НЕТ

Источник: http://lumpics.ru/than-to-open-a-file-jar/

Zip-архивирование в Java

Разархивация и запуск файлов JAR

В Java для чтения Zip-архивов применяется класс ZipInputStream. В каждом таком архиве всегда требуется просматривать отдельные записи (entries). Метод getNextEntry возвращает описывающий запись объект типа ZipEntry.

Метод read класса ZipInputStream изменяется так, чтобы он возвращал -1 в конце текущей записи (а не просто в конце Zip-файла). Далее вызывается метод closeEntry для получения возможности перехода к считыванию следующей записи.

        ZipInputStream zin = new ZipInputStream(new FileInputStream(zipName));        ZipEntry entry;        while ((entry = zin.getNextEntry()) != null) {            //анализ entry            //считывание содежимого            zin.closeEntry();        }        zin.close();

Для считывания содержимого конкретной записи из Zip-файла эффективнее использовать не стандартный метод read, а методы какого-то обладающего большими возможностями потокового фильтра. Например, для считывания текстового файла, находящегося внутри Zip-архива, можно применить следующий цикл:

        Scanner in = new Scanner(zin);        while (in.hasNextLine()) {            //выполнение операций с in.nextLine()

        }

Запись в Zip-архив.

Для записи Zip-файла применяется класс ZipOutputStream. Для каждой записи, которую требуется поместить в Zip-файл, создается объект ZipEntry. Желаемое имя для файла передается конструктору ZipEntry; тот устанавливает устанавливает остальные параметры, вроде даты создания файла и метода распаковки. При желании эти параметры могут переопределяться.

Далее вызывается метод putNextEntry класса ZipOutputStream для начала процесса записи нового файла. После этого данные самого файла отправляются потоку ZIp. По завершении вызывается метод closeEntry. Затем все эти действия выполняются повторно для всех остальных файлов, которые требуется сохранить в Zip-архиве.

Ниже приведена общая схема необходимого кода:

        FileOutputStream fout = new FileOutputStream(“test.zip”);        ZipOutputStream zout = new ZipoutputStream(fout);        //Для всех файлов:        {            ZipEntry ze = new ZupEntry(“имя файла”);//Имя файла – имя файла в архиве            zout.putNextEntry(ze);            //отправка данных в поток zout            zout.closeEntry();        }

        zout.close();

Сжатие объектов с сохранением

Имеется класс “Работник” реализующий интерфейс для сериализации:

import java.io.*;public class Employee implements Serializable {    String name;    int age;    int salary;    public Employee(String name, int age, int salary) {        this.name = name;        this.age = age;        this.

salary = salary;    }    public void print() {        System.out.println(“Record for: ” + name);        System.out.println(“Name: ” + name);        System.out.println(“Age: ” + age);        System.out.

println(“Salary: ” + salary);    }}

Сохранить объекты данного класса мы можем следующим кодом:

import java.io.*;import java.util.zip.

*;public class SaveEmployee {    public static void main(String argv[]) throws            Exception {        Employee sarah = new Employee(“S. Jordan”, 28,                56000);        Employee sam = new Employee(“S.

McDonald”, 29,                58000);        FileOutputStream fos = new FileOutputStream(“db”);        GZIPOutputStream gz = new GZIPOutputStream(fos);        ObjectOutputStream oos = new ObjectOutputStream(gz);        oos.writeObject(sarah);        oos.writeObject(sam);        oos.

flush();        oos.close();        fos.close();    }}

Здесь всё просто, данные мы сохраняем в файл (FileOutputStream) перед этим сжав их (GZIPOutputStream), а в роли данных выступают объекты (ObjectOutputStream).

Загрузить сохраненные сжатые объекты также просто как и сохранить их:

import java.io.*;import java.util.zip.

*;public class ReadEmployee {    public static void main(String argv[]) throws            Exception {        FileInputStream fis = new FileInputStream(“db”);        GZIPInputStream gs = new GZIPInputStream(fis);        ObjectInputStream ois = new ObjectInputStream(gs);        Employee sarah = (Employee) ois.readObject();        Employee sam = (Employee) ois.readObject();        sarah.print();        sam.print();        ois.close();        fis.close();    }}

Данные считываются из файла (FileInputStream), файлы являются сжатыми (GZIPInputStream), данными являются объекты (ObjectInputStream).

Также можно обмениваться сжатыми объектами между сервером/клиентом (с использованием сокетов), ниже представлен код отправки сжатого объекта клиенту:

GZIPOutputStream gzipout =         new GZIPOutputStream(socket.getOutputStream());ObjectOutputStream oos =         new ObjectOutputStream(gzipout);oos.writeObject(obj);

gzipos.finish();

Ниже представлен код по получению и декомпрессии данных объекта от сервера:

Socket socket = new Socket(remoteServerIP, PORT);GZIPInputStream gzipin =         new GZIPInputStream(socket.getInputStream());ObjectInputStream ois = new ObjectInputStream(gzipin);

Object o = ois.readObject();

Если Вам понравилась статья, проголосуйте за нее

9  

Источник: http://www.quizful.net/post/java-zip-archiving

Как открыть файл jar?

Разархивация и запуск файлов JAR

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

Рисунок 1. Окно выбора файла формата .jar для открытия

Что такое формат файла jar

Расширение Java ARchive – это специальный архив с приложениями. Если говорить простым языком, это документ ZIP, который дополнен определенными функциями. Как же его использовать на разных девайсах?

Как запустить файл в windows

На операционной системе Виндовс можно запустить jar файл специальными программами. Давайте перечислим основные варианты.

Oracle Java Runtime Environment

Это приложение, которое позволит просматривать документы на персональном компьютере. Вы сможете работать даже с теми играми, которые наотрез отказываются «сотрудничать» со стандартными программами.

Eclipse

Это бесплатная разработка, которая создана для работы с таким форматом. Простое и понятное меню не вызовет проблем и сложностей. В нем разберется начинающий пользователь, ведь все разложено по полочкам.

7-Zip

Этот архиватор поможет разобраться, как открыть файл jar. Подходит для использования документов с соответствующим форматом (Рисунок 2). Полнофункциональное приложение доступно для бесплатного скачивания. Скачать программу 7-Zip возможно на нашем сайте.

Рисунок 2. Внешний вид интерфейса программы 7-zip для работы с файлами jar

WinRAR

Этот архиватор умеет обрабатывать большинство расширений. С ним намного комфортнее понять, как запустить jar файл (Рисунок 3). Продукт используется на разных платформах.

Примечание: WinRAR Вы можете скачать у нас с сайта.

Рисунок 3. Рабочий интерфейс приложения WinRaR для работы с файлами .jar

IZArc

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

WinZIP

Еще один достаточно распространенный архиватор, который предназначен для расширения. WinZIP возможно скачать с нашего сайта. Отличается отменным сжатием памяти, поэтому есть возможность сэкономить место на жестком диске (Рисунок 4). Пакет предложен в разных версиях, что позволяет подобрать подходящий вариант для своего оборудования.

Рисунок 4. Внешний вид окна распакованного файла в приложении WinZIP

ZipZag

Работа с архивами будет комфортной и простой. Каждый пункт меню понятен для пользователя с небольшим опытом. Вы сможете просматривать документы формата, не сталкиваясь с проблемами.

Java Development Kit

Интерактивный пакет разработан специально для подобных расширений. Это полноценный набор инструментов, которые выполняют полезные функции.

Теперь вы знаете, как запустить jar файл в windows с помощью специальных пакетов.

Как запустить файл на linux

Линукс – это операционная система, на которой тоже часто используются подобные форматы. Посмотрите, как запустить jar файл linux, не сталкиваясь с проблемами.

Java Runtime Environment

Она позволяет запустить приложения, которые написаны на языке Java. Платформа подходит для эксплуатации на девайсах, работающих на операционной системе Линукс.

Запуск jar файла на MacOS

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

Apple Jar Launcher

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

WinZip Mac

Вариант для архивирования и хранения данных. Быстро открывает соответствующие расширения (Рисунок 5).

Рисунок 5. Внешний вид интерфейса приложения WinZip Mac для MacOS устройств

Как открыть файл на андроиде

Многие современные девайсы работают на ОС Андроид. Вы можете узнать, как открыть файл jar на андроиде без труда.

File Viewer

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

Как открыть файл с помощью java?

Вы не знаете, как открыть jar файл с помощью java? Для просмотра документов есть множество приложений Java. Вы можете выбрать то, что подходит для вашей операционной системы. Изучите характеристики каждого из вариантов, чтобы подобрать оптимальный пакет для своего гаджета.

Если вы ищете, чем открыть jar файл на компьютере, просмотрите вышеописанные способы. Среди них вы обязательно что-то возьмете на заметку!

Источник: https://soft-ok.net/4867-kak-otkryt-fayl-jar.html

Jar как запустить на компьютере

Разархивация и запуск файлов JAR

» ПО » Jar как запустить на компьютере

JAR (Java Archive File) – формат архива, в котором хранятся элементы программы, написанной на языке Java. Чаще всего файлы с таким расширением являются мобильными играми и приложениями. На компьютере можно просмотреть содержимое такого архива и/или попытаться запустить JAR как приложение.

Золотой сертификат Microsoft

автор: Jay Geater, главный писатель по вопросам технологий

Вам кто-то послал по электронной почте файл JAR, и вы не знаете, как его открыть? Может быть, вы нашли файл JAR на вашем компьютере и вас заинтересовало, что это за файл? Windows может сказать вам, что вы не можете открыть его, или, в худшем случае, вы можете столкнуться с соответствующим сообщением об ошибке, связанным с файлом JAR.

До того, как вы сможете открыть файл JAR, вам необходимо выяснить, к какому виду файла относится расширения файла JAR.

Совет: Неправильные ассоциации файлов JAR могут являться признаком других базовых проблем в вашей операционной системе Windows.

Эти неверные записи могут также стать причиной иных сопутствующих проблем, таких как медленный запуск Windows, зависание компьютера и прочих проблем производительности ПК.

Поэтому мы настоятельно рекомендуем вам просканировать свой реестр Windows на предмет неправильных ассоциаций файлов и других проблем, связанных с фрагментацией реестра.

Ответ:

Файлы JAR имеют Исполнимые файлы, который преимущественно ассоциирован с JARCS Compressed Archive (JPMdL Archival System).

Файлы JAR также ассоциированы с JAR Archive (ARJ Software Inc.), Java Archive (Sun Microsystems Inc.), Java Applet (Sun) и FileViewPro.

Иные типы файлов также могут использовать расширение файла JAR. Если вам известны любые другие форматы файлов, использующие расширение файла JAR, пожалуйста, свяжитесь с нами, чтобы мы смогли соответствующим образом обновить нашу информацию.

Как открыть ваш файл JAR:

Загрузить »

Самый быстрый и легкий способ открыть свой файл JAR — это два раза щелкнуть по нему мышью. В данном случае система Windows сама выберет необходимую программу для открытия вашего файла JAR.

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

Если ваш ПК открывает файл JAR, но в неверной программе, вам потребуется изменить настройки ассоциации файлов в вашем реестре Windows. Другими словами, Windows ассоциирует расширения файлов JAR с неверной программой.

Мы настоятельно рекомендуем просканировать ваш реестр Windows на предмет неверных ассоциаций файлов и прочих проблем, связанных с реестром.

Загрузки программного обеспечения, связанные с расширением файла JAR:

* Некоторые форматы расширений файлов JAR можно открыть только в двоичном формате.

Скачать FileViewPro для открытия ваших файлов JAR прямо сейчас

JAR Инструмент анализа файлов™

Вы не уверены, какой тип у файла JAR? Хотите получить точную информацию о файле, его создателе и как его можно открыть?

Теперь можно мгновенно получить всю необходимую информацию о файле JAR!

Революционный JAR Инструмент анализа файлов™ сканирует, анализирует и сообщает подробную информацию о файле JAR. Наш алгоритм (ожидается выдача патента) быстро проанализирует файл и через несколько секунд предоставит подробную информацию в наглядном и легко читаемом формате.†

Уже через несколько секунд вы точно узнаете тип вашего файла JAR, приложение, сопоставленное с файлом, имя создавшего файл пользователя, статус защиты файла и другую полезную информацию.

Чтобы начать бесплатный анализ файла, просто перетащите ваш файл JAR внутрь пунктирной линии ниже или нажмите «Просмотреть мой компьютер» и выберите файл. Отчет об анализе файла JAR будет показан внизу, прямо в окне браузера.

Ваш файл анализируется… пожалуйста подождите.

Имя файла:

Размер файла:

Прервать

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

# A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

www.solvusoft.com

Как запустить jar?

  • Перейти к основному контенту
  • Перейти к навигации
  • Перейти к футеру

Разрешённые вопросы

Средний рейтинг: 0.00 / 0 Проавших

Вопрос закрыт! Вы не можете отвечать на вопрос

click

Чтобы открыть jar или jad файл на компьютере вам необходимо установить программу Java скачать можно по ссылке:http://www.java.com/ru/ После установки, правой кнопкой на jar файл свойства=>Изменить, меняем на Java, жмем ок.После чего  будут нужно открывать java приложение как обычный exe файлОтветил Damkratus 1 месяц назад Средний рейтинг: 0.00 / 0 ПроавшихОтветил Damkratus 1 месяц назад
Архив JAR можно запустить, или разархивировать с помощью программы win rar. Если вы хотите просто запустить, то подведите мышку к нужному файлу, который заархивирован в названом формате, либо нажмите на нём два раза левой кнопкой мышки, либо же просто щёлкните клавишей enter. это запустить архив, открыть его. Ну, а если вы хотите его разархивировать, то нужно сделать следующее: станьте на нужным файл, который заархивирован в формате JAR, нажмите правую кнопку мышки, тем самым открывая контекстное меню. А здесь может быть несколько вариантов, в открывшемся контексте может быть так: либо вы увидите среди пунктов в смешаном виде и пункты операций с архивами, и тогда вам надо нажать на пункт, либо извлечь файлы…”, либо “извлечь в текущую папку”, либо “извлеч в… (название папки по архиву)”. Эти пункты нужно применять взависимости от того, сколько в архиве файлов, и не заархивирована ли в этом архиве одна папка, которая и содержит много файлов. Это мы могли посмотреть, когда запускали архив, открывали его. Если вы видели, что у вас в архиве просто много разбросанных файлов, то лучше выбрать пункт, который называется “извлеч в… (здесь идёт название папки по архиву)”. Если же у вас одна папка, тогда выбираем пункт “извлечь в текущую папку”. Ну, а если вы хотите извлечь этот архив в другое место, тогда выбираем пункт “извлеч файлы…”. Это, конечно то ещё морочливое дело! в этом пункте вам необходимо будет выбрать путь, куда вы будете разархивировать свой архив, но если вам это нужно, тогда придётся проделать все операции, а если не выберете путь, то он поумолчанию разархивирует в текущую папку. Я говорил о нескольких вариантах в меню. Второй вариант, в том же контексте может быть подменю “win rar”, собственно, там и могут содержаться все выше названые пункты операций с архивацией-разархивацией даных. ну, а третий вариант, это те же операции, как в отдельном, так и в смешаном меню, в верхнем, так называемом “бар меню”.Вот так несложно пользоваться форматом JAR.Ответил Валентин 1 месяц назад Средний рейтинг: 0.00 / 0 ПроавшихОтветил Валентин 1 месяц назад

Идёт загрузка…

Нашли ответ на свой вопрос? Помогите и другим пользователям:



qalib.net

Источник: https://htfi.ru/po/jar_kak_zapustit_na_kompyutere.html

Пять секретов… JAR-файлов

Разархивация и запуск файлов JAR

Архив Java — это не просто набор классов

Тед Ньюворд
19.10.2012

Для большинства Java-разработчиков JAR-файлы и их специализированные собратья WAR- и EAR-файлы – это просто конечный результат длительного процесса работы в Ant или Maven. Стандартная процедура ― скопировать JAR в нужное место на сервере (или, реже, в компьютере пользователя) и забыть о нем.

На самом деле, JAR-файлы годятся не только для того, чтобы хранить исходный код. Просто нужно знать их возможности и способы реализации этих возможностей. Советы, приведенные в этом выпуске Пяти секретов, помогут выжать максимум из файлов архива Java (а в некоторых случаях также и файлов WAR/EAR), особенно в процессе развертывания.

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

Вы думаете, что знаете о Java-программировании все? На самом деле большинство разработчиков только скребет по поверхности платформы Java, изучив ее лишь настолько, чтобы выполнять свою работу. В этом цикле статей Тед Ньюард углубляется в функциональные возможности платформы Java, выявляя малоизвестные факты, которые могут помочь в решении самых заковыристых задач программирования.

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

Сохранение в JAR

Как правило, JAR-файл создают после компиляции исходного кода, чтобы собрать Java-код (который отделен от пакета) в одну коллекцию с помощью утилиты командной строки jar или, чаще, задачи jar Ant.

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

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

Листинг 1. Архивирование утилиты консоли

package com.tedneward.jars; public class Hello{ public static void main(String[] args) { System.out.println(“Howdy!”); }}

Утилита Hello делает не много, но это полезный пример для изучения JAR-файлов, начиная с выполнения кода.

1. JAR-файлы исполняемы

Исторически языки типа.NET и C++ обладают преимуществом дружественного отношения к ОС: чтобы запустить приложение, достаточно просто набрать его имя в командной строке (helloWorld.

exe) или дважды щелкнуть на соответствующий значок в оболочке графического интерфейса пользователя (GUI). В Java-программировании модуль запуска приложения —java— загружает в процесс JVM, и ему нужно передать аргумент командной строки (com.tedneward.

Hello), указывающий класс, метод main() которого мы хотим запустить.

Эти дополнительные шаги затрудняют создание удобных для пользователя приложений на языке Java. Все эти элементы нужно набрать в командной строке, чего многие конечные пользователи стараются избегать, и очень часто что-то выходит не так, и это приводит к странным сообщениям об ошибке.

От этого можно уйти, сделав JAR-файл «исполняемым», так чтобы при его выполнении модуль запуска Java автоматически узнавал, какой класс нужно запустить. Для этого достаточно ввести в манифест JAR-файла (MANIFEST.MF в подкаталоге архива JAR META-INF) следующую запись.

Листинг 2. Указание точки входа

Main-Class: com.tedneward.jars.Hello

Манифест ― это просто набор пар имя/значение. Иногда манифест может придираться к символам пробела и возврата строки, так что простейший способ ― использовать для его создания Ant. В листинге 3 для определения манифеста применяется элемент manifest задачи Ant jar.

Листинг 3. Создание точки входа

Теперь, чтобы выполнить JAR-файл, пользователю достаточно ввести его имя в командную строку посредством команды java -jar outapp.jar. В некоторых GUI-оболочках это можно сделать и двойным щелчком на JAR-файле.

2. JAR-файлы могут включать сведения о зависимостях

С ростом популярности утилиты Hello возникла необходимость варьировать ее реализацию. Многими деталями этого процесса управляют контейнеры инъекции зависимостей (Dependency Injection – DI), такие как Spring или Guice, но есть одно “но”: изменение кода для включения контейнера DI может привести к результатам, подобным тому, что приведен в листинге 4.

Листинг 4. Hello, мир Spring!

package com.tedneward.jars; import org.springframework.context.*;import org.springframework.context.support.*; public class Hello{ public static void main(String[] args) { ApplicationContext appContext = new FileSystemXmlApplicationContext(“./app.

xml”); ISpeak speaker = (ISpeak) appContext.getBean(“speaker”); System.out.println(speaker.sayHello()); }}

Этот совет предполагает знакомство с инъекцией зависимостей и средой Spring.

Чтобы освежить свои знания в той или другой области, обращайтесь к разделу Ресурсы.

Параметр -jar модуля запуска отменяет все, что находиться в параметре -classpath командной строки, поэтому при запуске этого кода Spring должен присутствовать в CLASSPATH и в переменной окружения. К счастью, JAR-файлы допускают объявление в манифесте других JAR-зависимостей, которые неявно создают CLASSPATH без необходимости объявлять его, как показано в листинге 5.

Листинг 5. Hello, Spring CLASSPATH!

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

К сожалению, атрибут value Ant-атрибута Class-Path должен находиться в той же строке, поскольку манифест JAR не может работать с множественными атрибутами Class-Path. Так что все эти зависимости должны находиться в одной строке файла манифеста. Конечно, это некрасиво, но возможность написать java -jar outapp.jar того стоит!

3. На JAR-файлы можно ссылаться неявно

Когда есть несколько различных утилит командной строки (или других приложений), использующих среду Spring, удобно поместить JAR-файлы Spring в общую папку, посредством которой можно ссылаться на все эти утилиты.

Это позволит избежать работы с несколькими копиями JAR-файлов, разбросанными по всей файловой системе. По умолчанию таким местом служит обычное местоположение среды выполнения Java для JAR-файлов, т.н.

«каталог расширения», который находится в подкаталоге lib/ext каталога установки JRE.

Местоположение JRE можно изменять, но это делают так редко, так что для данной среды Java можно вполне безопасно предположить, что lib/ext – надежное место хранения JAR-файлов и что они будут неявно присутствовать в CLASSPATH среды Java.

4. Java 6 допускает подстановочные знаки в classpath

Во избежание громоздких переменных окружения CLASSPATH (от которых Java-разработчикам следовало бы отказаться много лет назад) и/или параметров командной строки -classpath в Java 6 введено понятие подстановочный знак classpath. Вместо того чтобы запускать каждый JAR-файл, явно указанный в аргументе, подстановочные знаки classpath позволяют написать lib/*, и в classpath попадут все JAR-файлы, перечисленные в этом каталоге (не рекурсивно).

К сожалению, подстановочные знаки classpath не поддерживаются в записи атрибута Class-Path манифеста, о которой говорилось выше. Но они облегчают запуск Java-приложений (включая серверы) при решении таких задач, как работа с инструментами генерации или анализа кода.

5. JAR- файлы содержат не только код

Spring, как и многие другие составляющие экосистемы Java, зависит от файла конфигурации, определяющего организацию среды. А именно, Spring зависит от файла app.xml, который находится в том же каталоге, что и файл JAR — но разработчики часто забывают скопировать вместе с JAR-файлом файл конфигурации.

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

Разумное решение ― упаковать файл конфигурации вместе с кодом — и это выполнимо, потому что JAR ― это в основном замаскированный ZIP.

Просто при построении JAR включите файлы конфигурации в Ant-задачу или командную строку jar.

JAR-файлы могут содержать не только файлы конфигурации, но и файлы других типов. Например, если бы мой компонент SpeakEnglish должен был бы обращаться к файлу свойств, я бы сделал это примерно так, как показано в листинге 6.

Листинг 6. Произвольный ответ

package com.tedneward.jars; import java.util.*; public class SpeakEnglish implements ISpeak{ Properties responses = new Properties(); Random random = new Random(); public String sayHello() { // Выбор произвольного ответа int which = random.nextInt(5); return responses.

getProperty(“response.” + which); }}

Помещение responses.properties в JAR-файл означает, что файлов, о которых придется беспокоиться при развертывании наряду с JAR-файлами, стало на один меньше. Для этого достаточно включить файл responses.properties при создании JAR.

Однако как получить те свойства, которые хранятся в JAR-файле, назад? Если нужные данные расположены внутри одного и того же JAR-файла, как в предыдущем примере, не обязательно пытаться вспомнить местоположение этого JAR-файла и открывать его с помощью объекта JarFile. Вместо этого предоставьте ClassLoader данного класса найти его в качестве «ресурса» в составе JAR-файла, воспользовавшись методом ClassLoader getResourceAsStream(), как показано в листинге 7.

Листинг 7. ClassLoader находит ресурс

package com.tedneward.jars; import java.util.*; public class SpeakEnglish implements ISpeak{ Properties responses = new Properties(); // … public SpeakEnglish() { try { ClassLoader myCL = SpeakEnglish.class.getClassLoader(); responses.load( myCL.getResourceAsStream( “com/tedneward/jars/responses.

properties”)); } catch (Exception x) { x.printStackTrace(); } } // …}

Эта процедура работает с ресурсами любого рода: файлами конфигурации, аудиофайлами, графическими файлами и т.п.

Файл практически любого типа можно поместить в JAR, полученный как InputStream (посредством ClassLoader), и использовать любым способом.

Заключение

Эта статья раскрывает пять секретов JAR-файлов, обычно скрытых от большинства Java-разработчиков — по крайней мере, если основаться на истории и случаях из жизни. Отметим, что все советы, относящиеся к JAR-файлам, в полной мере справедливы и для WAR-файлов.

Некоторые из них (в частности, атрибуты Class-Path и Main-Class), в случае WAR-файлов не так полезны, потому что среда сервлетов сама собирает все содержимое каталога и имеет предопределенную точку входа. Тем не менее, взятые в совокупности, эти советы выводят нас за рамки парадигмы «Начнем с копирования всего в этот каталог…

» При этом они значительно упрощают и процесс развертывания Java-приложений.

Следующая статья этого цикла: “Пять секретов контроля производительности Java-приложений”.

Ресурсы для скачивания

  • Оригинал статьи: 5 things you didn't know about … JARs.
  • 5 things you didn't know about … (Ted Neward, developerworks): этот новый цикл статей превращает крупицы Java в золото программирования.
  • JAR files revealed (Pagadala Suresh and Palaniyappan Thiagarajan, developerWorks, октябрь 2003 г.): о возможностях и преимуществах формата Java Archive, включая упаковку, исполняемые JAR-файлы, безопасность и индексирование.
  • Упаковка программ в JAR-файлы (цикл руководств по Java): основы JAR-файлов.
  • Spring: сведения об этой мощной, гибкой и популярной среде, взятые непосредственно из источника.
  • Dependency injection with Guice (Nicholas Lesiecki, developerworks, декабрь 2008 г.): DI упрощает диагностику, проверку и манипулирование кодом, а Guice упрощает DI.
  • Setting multiple jars in java classpath (StackOverflow Q&A, последнее обновление – март 2010 г.): подробнее о подстановочных знаках а classpath.
  • See JARs run (Shawn Silverman, JavaWorld.com, май 2002 г.): подробное руководство по созданию JAR-файлов.
  • Advanced topics in programming languages series: JSR 277: Java Module System (Google Tech Talks, май 2007 г.): JAR-файлы имеют свои недостатки — в их числе проклятье classpath, проклятье JAR и проклятье расширения. В этом разделе Google Tech Talk объясняется, как JSR 277 избавляет от них.

Источник: https://www.ibm.com/developerworks/ru/library/j-5things6/

Самораспаковывающиеся jar-файлы

Разархивация и запуск файлов JAR

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

В этой статье описан простой способ создания самораспаковывающихся Java-архивов (jar-файлов). Самораспаковывающийся архив может извлекать содержащиеся в нём файлы в выбранные пользователем каталоги на любой платформе Java. Пользователям нужна только среда выполнения Java-программ. (В оригинальной версии на английском языке 1200 слов)

Многие годы zip-архивы Фила Каца были одним из наиболее популярных форматов архивирования файлов. Компания Sun приняла формат zip как основу для Java-архивов (JAR).

Sun расширила использование формата zip различными конвенциями, обеспечив возможность упаковки классов Java в архив.

С дополнением файла манифеста JAR среда исполнения Java-программ может легко найти и непосредственно выполнить main-класс Java-приложения, содержащегося в jar-файле.

Некоторые zip-утилиты могут создавать самораспаковывающиеся архивы для различных платформ, например MS Windows.

Такая утилита объединяет обычный zip-архиватор с программой, генерирующей новый исполняемый (exe) файл. Получатели exe-файла должны просто запустить его, чтобы извлечь содержимое zip-архива.

Исполняемый файл запускает распаковщик для извлечения файлов из архива в указанный пользователем каталог вывода.

Вы можете преобразовать обычный zip- или jar-файл в исполняемый jar-файл на любой платформе, поддерживающей Java. Тогда как самораспаковывающийся zip-файл может быть преобразован в исполняемый файл только для определённой платформы, самораспаковывающийся jar-файл может распространяться и выполняться на любой поддерживающей Java платформе.

Создать самораспаковывающийся jar-файл просто. Необходимы только специальный файл манифеста JAR, основанная на Java программа-распаковщик, zip- или jar-файл, содержащий файлы с основным содержимым, и любая jar-утилита из Java SDK.

Файл манифеста

Чтобы делать исполняемые jar-файлы, нужен, прежде всего, файл манифеста с именем MANIFEST.MF в каталоге META-INF . Файл манифеста может содержать множество разных пунктов; однако для наших целей здесь мы должны только определить имя Java-класса, который содержит метод main() основанного на Java распаковщика:

Main-класс: ZipSelfExtractor .

Мы добавили файл манифеста с именем jarmanifest к коду примера данного совета. Для получения дополнительной информации по файлу манифеста см. спецификацию jar-файла.

Распаковщик

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

Имея это имя, распаковщик использует стандартные, встроенные zip/jar-библиотеки Java, чтобы извлечь файлы, содержащиеся в архиве. Полный исходный текст ZipSelfExtractor можно найти в ZipSelfExtractor.java.

Передача имени jar-файла в программу-распаковщик может оказаться непростым делом. Хотя имя jar-файла появляется в командной строке, это имя не передаётся main()-методу класса. Поэтому в программе-распаковщике мы используем следующий код, чтобы извлечь информацию из URL, который указывает на распаковщик:

private String getJarFileName (){ myClassName = this.getClass().getName() + “.class”; URL urlJar = this.getClass().getClassLoader().getSystemResource(myClassName); String urlStr = urlJar.toString(); int from = “jar:file:”.length(); int to = urlStr.indexOf(“!/”); return urlStr.substring(from, to);}Заметьте, что в метод getSystemResource() мы передаем myClassName вместо ZipSelfExtractor.class . Это позволяет изменять имя программы-распаковщика без изменения этой части кода. Мы ищем имя текущего класса, чтобы определить myClassName .

Затем мы извлекаем имя jar-файла. Сначала мы запрашиваем URL к файлу класса, содержащему выполняющийся в настоящее время класс (который является распаковщиком). Получив URL, мы можем получить имя jar-файла. По определению, URL программы-распаковщика JAR следует за основным форматом:

  1. jar:, который показывает, что этот исполняемый файл запускается из jar-файла.
  2. URL jar-файла типа file:/C:/temp/test.jar, за которым следует символ !.
  3. Имя пути файла внутри jar-архива типа /ZipSelfExtractor.class.

В случае программы-распаковщика URL может выглядеть как:

jar:file:/home/johnm/test/zipper.jar!/ZipSelfExtractor.class

Теперь, имея имя jar-файла, мы можем выполнить разархивацию. Распаковщик опирается на встроенные библиотеки Java для манипулирования zip/jar-файлами, чтобы распаковать файлы, содержащиеся в архиве. См. Ресурсы, чтобы получить дополнительную информацию о библиотеках Java для манипулирования zip/jar-файлами.

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

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

По завершении стандартное диалоговое окно представляет статистику разархивации.

Наконец, программа-распаковщик следит, чтобы не извлечь файлы, которые делают jar-файл самораспаковывающимся, т.е. файл манифеста и .class -файл распаковщика; программа должна только извлечь первоначальное содержание JAR. Эти два файла — принадлежность самораспаковывающегося jar-файла, и не входят в число оригинальных, основных файлов содержимого.

Упаковка jar-файла

Теперь, имея файл манифеста и распаковщик, мы можем создать самораспаковывающийся jar-файл. Мы можем вручную использовать jar-утилиту из JDK, чтобы сделать самораспаковывающийся jar-файл. Например, предположив, что у Вас есть zip-файл myzip.zip , Вы можете предпринять следующие шаги, чтобы создать из него самораспаковывающийся файл:

  1. Перейдите в каталог, содержащий myzip.zip .
  2. Загрузите zipper.jar .
  3. Извлеките файлы в текущий каталог. Мы сделали этот jar-архив самораспаковывающимся.
    java -jar zipper.jar
  4. Скопируйте файл zipper.class в ZipSelfExtractor.class .
  5. Переименуйте myzip.zip в myzip.jar .
  6. Обновите myzip.jar , добавив файлы jarmanifest и ZipSelfExtractor.class :
    jar uvfm myzip.jar jarmanifest ZipSelfExtractor.class

Теперь myzip.jar стал самораспаковывающимся файлом на всех платформах, содержащих среду выполнения Java-программ (JRE) версии 1.2 или позже. Чтобы выполнить самораспаковывающийся jar-файл, введите:

java -jar myzip.jar

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

Упражнение для читателя

Текущий ZipSelfExtract не обеспечивает хорошей интеграции, если Вы делаете самораспаковывающийся jar-архив из существующего jar-файла, уже содержащего файл манифеста. Добавьте интеллекта к распаковщику и инструкциям создания, чтобы Вы могли работать с существующими jar-файлами, содержащими файлы манифеста.

Свобода действий с JAR

Самораспаковывающийся jar-файл — хороший механизм распространения файлов на различных платформах. Самораспаковывающиеся jar-архивы просто создавать, и минимальное требование к пользователю установить JRE 1.2 или более позднюю версию — разумный компромисс, позволяющий получить кросс-платформенную поддержку.

Вместо создания самораспаковывающегося jar-файла вручную испытайте ZipAnywhere. ZipAnywhere — полнофункциональная zip/jar-утилита, написанная на 100% чистой Java. Это — свободно распространяемый инструмент с графическим интерфейсом типа WinZip, который позволяет создавать самораспаковывающиеся jar-файлы одним щелчком кнопки.

Об авторах

Доктор Зунх Стив Джин — инженер-программист в Rational Software и автор ZipAnywhere .

Джон Д. Митчелл — редактор и автор колонки Tips 'N Tricks в JavaWorld . Джон также основатель и главный архитектор Non, Inc. , консультационной фирмы по управлению технологическими деловыми рисками.

Источник: http://www.javaportal.ru/java/articles/zipperjar.html

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.