Упаковка файлів зображень всередину JAR-архіву
При розробці програми всі зображення ми розміщували в корені диска C:\ і при завантаженні вказували шлях до них:
fon = ImageIO.read(new File("c:\fon.png"));
catch (Exception ex) <>
Після завершення налагодження програми шлях до зображень ми змінювали з кореня диска С:\на шлях до поточної папки:
fon = ImageIO.read(new File("./fon.png"));
catch (Exception ex) <>
Далі виконували запуск програми, щоб файли з розширенням*.classкомпілювалися знову. І після цього робили створення JAR-архіву.
При такому підході всі файли зображень повинні знаходитись в одній папці з JAR-архівом. При такому підході може виникнути бажання помістити файли зображень також всередину JAR-архіву. І така можливість є! У цьому випадку вся гра, включаючи зображення, буде представлена лише одним JAR-файлом.
По-перше: шлях до зображень необхідно вказати щодо JAR-архіву. Допустимо, у процесі розробки шлях був вказаний щодо кореня диска C:\
fon = ImageIO.read(new File("c:\fon.png"));
catch (Exception ex) <>
Тепер потрібно записати так:
catch (Exception ex) <>
Замість створення об'єкта new File() тепер використовується pole.class.getResource(), ім'я файлу вказується всередині подвійних лапок без вказівки шляху до файлу. Перше слово - це ім'я класу, всередині якого відбувається завантаження зображення. У даному випадку - це клас з назвою pole:
Такі зміни необхідно зробити у всіх класах вашого проекту, де відбувається завантаження зображень. Після всіх змін програму необхідно обов'язково запустити! У цей момент файли з розширенням *.class скомпілюються знову, але вже з урахуванням змін. Під час запуску ви побачите, що вашізображення не з'явилися. Це правильно!
По-друге: необхідно відкрити Мій комп'ютер і перейти до папки, в якій знаходиться пакет JAVA. За умовчанням вона знаходиться:
C: Program Files (x86) Java або C: Program Files Java (див. рис. 2). Усередині неї ви побачите папку з назвою JDK – це пакет розробника (див. рис.2). Переходимо до неї та всередині до папки BIN (див. рис. 3).


У папці BIN знаходяться файли, за допомогою яких середовище розробки Eclipse виконує запуск програми Java, компіляцію у файли з розширенням *. class, створення JAR-архіву. Розглянемо їх:
1. javaw.exe -виконує запуск програми на виконання
2. javac.exe - виконує компіляцію програми з файлів з розширенням *. java в файли проміжного байт-коду з розширенням *.
3. jar.exe - виконує створення JAR-архіву і розміщує всередині нього файли з розширенням *. class і додаткові ресурси (зображення і т.д.)
Середовище розробки Eclipse автоматично використовує ці файли за потреби.
Нам знадобиться утиліта для створення JAR-архіву-файлjar.exe
Всередині папки BIN необхідно створити файл BAT, назвемо його make.bat.
У цьому файлі запишемо:
jar cfm zmeika.jar manifest.mf *.class *.png
Це виклик утиліти jar.exe із зазначенням додаткових параметрів. При такому виклику в JAR-архів помістяться всі файли з розширенням *. class і *. png, які будуть знаходитися в поточній папці BIN. Ім'я архіву буде zmeika.jar. Збережемо файл make.bat (див. мал. 4).
Далі при створенні архівів вам доведеться змінювати лише ім'я JAR-архіву:
jar cfm zmeika.jar manifest.mf *.class *.png
Решта залишатиметься без змін.
У файлі make.bat ми вказали файл з найменуванням manifest.mf - це так званий файлманіфесту, у цьому файлі вказується ім'я головного класу нашої програми. Головний клас містить метод main() - це точка входу (запуску) програми.
Усередині папки BIN створимо файл manifest.mf, всередині файлу запишемо:
Збережемо файл (див. мал. 5).
У даному випадку zmeika - це назва головного класу програми. При записі тексту всередині файлу manifest.mf необхідно дотримуватися деяких вимог:
1. Реєстр букв має значення!
2. Після двокрапки необхідно поставити пробіл.
3. Після вказівки імені головного класу необхідно виконати переклад рядка, натиснувши клавішу Enter.
При найменших помилках у файлі manifest.mf –створити JAR-архів НЕ ОТРИМАЄТЬСЯ.
Далі при створенні архівів, у файлі маніфесту вам доведеться змінювати тільки ім'я головного класу.
По-третє: у папку BIN, де вже знаходяться файли manifest.mf, make.bat необхідно помістити всі файли із зображеннями (з розширенням *.png).
При створенні JAR-архіву всі файли з розширенням *.png з папки BIN будуть упаковані. Тому в папці BIN не повинно бути зайвих PNG файлів.
По-четверте: у папку BIN, де вже знаходяться файли manifest.mf, make.bat необхідно помістити всі файли вашої програми з розширенням *. class.

По-п'яте: необхідно запустити файл make.bat. Це виконується подвійним клацанням лівої кнопки миші на файлі make.bat (див. мал. 7).
Файл make.bat запустить утиліту jar.exe і передасть їй необхідні параметри, зокрема ім'я файлу маніфесту (manifest.mf). Якщо все виконається правильно, то всередині папки BIN з'явиться JAR-архів із вказаним ім'ям (див. мал. 8).

Цей JAR-архів містить файли зображень у собі. Тепер для передачі гри користувачеві достатньо передати лише один файл. JAR-архів-це запускається навиконання, але таки архів. Тому з нього можна витягти звичайним архіватором. Якщо ви це зробите, то побачите його вміст (див. рис. 9). Усередині архіву знаходяться файли з розширенням *. class, файли з розширенням *. png і папка META-INF. У папці META-INF міститься файл MANIFEST.MF (файл маніфесту).
Увага. При запуску JAR-архіву можуть виникати проблеми, якщо він розташований у папці, шлях до якої містить українські літери. У цьому випадку JAR-архів може не запуститись. Така проблема можлива залежно від операційної системи та поточної версії віртуальної машини Java.