1. Огляд
Як правило, кожна значуща програма включає один або кілька файлів JAR як залежності. Однак іноді сам файл JAR являє собою автономну програму або веб-програму.
У цій статті ми зупинимося на автономному сценарії застосування. Далі ми будемо називати це програмою JAR.
У цьому підручнику ми спочатку дізнаємося, як створити додаток JAR. Пізніше ми дізнаємось, як запускати програму JAR із аргументами командного рядка або без них .
2. Створіть додаток JAR
Файл JAR може містити один або кілька основних класів. Кожен основний клас є точкою входу програми . Отже, теоретично файл JAR може містити більше одного додатка, але він повинен містити принаймні один основний клас, щоб мати змогу запускатись.
У файлі JAR у файлі маніфесту може бути встановлена одна точка входу . У цьому випадку файл JAR є виконуваним файлом JAR. Основний клас повинен бути включений до цього файлу JAR.
Перш за все, давайте побачимо короткий приклад того, як скомпілювати наші класи та створити виконуваний файл JAR із файлом маніфесту:
$ javac com/baeldung/jarArguments/*.java $ jar cfm JarExample.jar ../resources/example_manifest.txt com/baeldung/jarArguments/*.class
Невиконуваний JAR - це просто файл JAR, який не має основного класу, визначеного у файлі маніфесту. Як ми побачимо пізніше, ми все ще можемо запустити основний клас, який міститься у самому файлі JAR.
Ось як ми могли б створити невиконуваний JAR без файлу маніфесту:
$ jar cf JarExample2.jar com/baeldung/jarArguments/*.class
3. Аргументи командного рядка Java
Як і будь-яка програма, програма JAR приймає будь-яку кількість аргументів, включаючи нульові аргументи. Все залежить від потреби програми.
Це дозволяє користувачеві вказати інформацію про конфігурацію під час запуску програми .
Як результат, програма може уникнути жорстко закодованих значень і досі може обробляти безліч різних випадків використання.
Аргумент може містити будь-які буквено-цифрові символи, символи Unicode і, можливо, деякі спеціальні символи, дозволені оболонкою, наприклад '@'.
Аргументи розділені одним або декількома пробілами . Якщо аргумент повинен містити пробіли, пробіли повинні бути заключені між лапками. Або одинарні, або подвійні лапки чудово працюють.
Зазвичай для типового додатка Java під час виклику програми користувач вводить аргументи командного рядка після імені класу.
Однак не завжди це стосується програм JAR.
Як ми вже обговорювали, основним методом є точка входу основного класу Java. Всі аргументи є String s і передаються основному методу як масив String .
Тим не менш, всередині програми ми можемо перетворити будь-який елемент масиву String в інші типи даних, такі як char , int , double , їх обгорткові класи або інші відповідні типи.
4. Запустіть виконуваний JAR з аргументами
Давайте розберемо основний синтаксис запуску виконуваного файлу JAR з аргументами:
java -jar jar-file-name [аргументи…]
Створений раніше виконуваний файл JAR - це проста програма, яка просто друкує передані аргументи. Ми можемо запустити його з будь-якою кількістю аргументів. Нижче наведено приклад із двома аргументами:
$ java -jar JarExample.jar "arg 1" [email protected]
У консолі ми побачимо наступний вивід:
Hello Baeldung Reader in JarExample! There are 2 argument(s)! Argument(1):arg 1 Argument(2):[email protected]
Отже, викликаючи виконуваний файл JAR, нам не потрібно вказувати ім’я основного класу в командному рядку . Ми просто додаємо свої аргументи після імені файлу JAR. Якщо ми надаємо ім'я класу після імені виконуваного файлу JAR, воно просто стає першим аргументом фактичного основного класу.
У більшості випадків програма JAR є виконуваним файлом JAR. Виконуваний JAR може мати максимум один основний клас, визначений у файлі маніфесту.
Отже, інші програми в тому самому виконуваному файлі JAR не можуть бути встановлені у файлі маніфесту, але ми все одно можемо запускати їх із командного рядка так само, як і для невиконаного JAR. Як саме ми побачимо в наступному розділі.
5. Запустіть невиконуваний JAR з аргументами
Щоб запустити додаток у невиконавчому файлі JAR, нам потрібно використовувати параметр -cp замість -jar . Ми використаємо опцію -cp (скорочення від classpath), щоб вказати файл JAR, який містить файл класу, який ми хочемо виконати:
java -cp jar-файл-ім'я ім'я основного класу [аргументи ...]
Як бачите, у цьому випадку нам доведеться включити в командний рядок ім’я основного класу, за яким слід аргументи .
Створений раніше невиконавчий JAR містить ту саму просту програму. Ми можемо запустити його з будь-якими (включаючи нульові) аргументами. Ось приклад із двома аргументами:
$ java -cp JarExample2.jar com.baeldung.jarArguments.JarExample "arg 1" [email protected]
І, як ми бачили вище, ми побачимо наступний результат:
Hello Baeldung Reader in JarExample! There are 2 argument(s)! Argument(1):arg 1 Argument(2):[email protected]
6. Висновок
У цьому посібнику ми вивчили два способи запуску програми JAR у командному рядку з аргументами або без них.
Ми також продемонстрували, що аргумент може містити пробіли та спеціальні символи (якщо це дозволено оболонкою).
Як завжди, код для прикладів доступний на GitHub.