Ръководство за създаване и стартиране на Jar файл в Java

1. Общ преглед

Обикновено е удобно да групирате много файлове от клас Java в един архивен файл.

В този урок ще разгледаме тънкостите при работата с jar - или J ava AR chive - файлове в Java.

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

2. Настройка на Java програма

Преди да можем да създадем изпълним jar файл, приложението ни трябва да има клас с основен метод. Този клас осигурява нашата входна точка в приложението:

public static void main(String[] args) { System.out.println("Hello Baeldung Reader!"); }

3. Jar Command

Сега, когато всички сме настроени, нека компилираме нашия код и създадем нашия jar файл.

Можем да направим това с javac от командния ред:

javac com/baeldung/jar/*.java

Командата javac създава JarExample.class в директорията com / baeldung / jar . Вече можем да го опаковаме в jar файл.

3.1. Използване на настройките по подразбиране

За да създадем jar файла, ще използваме командата jar .

За да използваме командата jar за създаване на jar файл, трябва да използваме опцията c, за да посочим, че създаваме файл, и опцията f, за да посочим файла:

jar cf JarExample.jar com/baeldung/jar/*.class

3.2. Задаване на основния клас

Полезно е манифестът на jar файла да включва основния клас.

Манифестът е специален файл в буркан, намиращ се в директорията META-INF и наречен MANIFEST.MF . Файлът на манифеста съдържа специална мета информация за файлове в файла на jar.

Някои примери за това, за което можем да използваме файл на манифест, включват настройка на входната точка, настройка на информация за версията и конфигуриране на пътя на класа.

Като използваме опцията e , можем да посочим нашата входна точка и командата jar ще я добави към генерирания файл на манифеста.

Нека да стартираме jar с посочена входна точка:

jar cfe JarExample.jar com.baeldung.jar.JarExample com/baeldung/jar/*.class

3.3. Актуализиране на съдържанието

Да приемем, че сме направили промяна в един от нашите класове и сме го компилирали. Сега трябва да актуализираме нашия jar файл.

Нека използваме командата jar с опцията u, за да актуализираме съдържанието му:

jar uf JarExample.jar com/baeldung/jar/JarExample.class

3.4. Задаване на манифестен файл

В някои случаи може да се наложи да имаме по-голям контрол върху това, което влиза в нашия файл с манифести. Командата jar предоставя функционалност за предоставяне на собствена информация за манифеста.

Нека добавим частичен манифестен файл с име example_manifest.txt към нашето приложение, за да зададем нашата входна точка:

Main-Class: com.baeldung.jar.JarExample

Информацията за манифеста, която предоставяме, ще бъде добавена към това, което генерира командата jar, така че това е единственият ред, от който се нуждаем във файла.

Важно е да завършим нашия файл с манифести с нов ред . Без новия ред файлът ни с манифест ще бъде игнориран безшумно.

С тази настройка, нека създадем нашия буркан отново, като използваме нашата информация за манифеста и опцията m :

jar cfm JarExample.jar com/baeldung/jar/example_manifest.txt com/baeldung/jar/*.class

3.5. Многословен изход

Ако искаме повече информация от командата на jar , можем просто да добавим опцията v за подробно.

Нека да стартираме нашата команда jar с опцията v :

jar cvfm JarExample.jar com/baeldung/jar/example_manifest.txt com/baeldung/jar/*.class added manifest adding: com/baeldung/jar/JarExample.class(in = 453) (out= 312)(deflated 31%)

4. Използване на Maven

4.1. Конфигурация по подразбиране

Също така можем да използваме Maven, за да създадем своя буркан. Тъй като Maven предпочита конвенцията пред конфигурацията, можем просто да стартираме пакета, за да създадем нашия jar файл.

mvn package

По подразбиране нашият jar файл ще бъде добавен към целевата папка в нашия проект.

4.2. Посочване на основния клас

Също така можем да конфигурираме Maven да задава основния клас и да създава изпълним jar файл.

 org.apache.maven.plugins maven-jar-plugin ${maven-jar-plugin.version}    com.baeldung.jar.JarExample    

5. Използване на Spring Boot

5.1. Използване на Maven и по подразбиране

If we're using Spring Boot with Maven, we should first confirm that our packaging setting is set to jar rather than war in our pom.xml file.

4.0.0 spring-boot jar spring-boot

Once we know that's configured, we can run the package goal:

mvn package

5.2. Setting the Entry Point

Setting our main class is where we find differences between creating a jar with a regular Java application and a fat jar for a Spring Boot application. In a Spring Boot application, the main class is actually org.springframework.boot.loader.JarLauncher.

Although our example isn't a Spring Boot application, we could easily set it up to be a Spring Boot console application.

Our main class should be specified as the start class:

 com.baeldung.jar.JarExample  

We can also use Gradle to create a Spring Boot fat jar.

6. Running the Jar

Now that we've got our jar file, we can run it. We run jar files using the java command.

6.1. Inferring the Main Class

Since we've gone ahead and made sure our main class is specified in the manifest, we can use the -jar option of the java command to run our application without specifying the main class:

java -jar JarExample.jar

6.2. Specifying the Main Class

We can also specify the main class when we're running our application. We can use the -cp option to ensure that our jar file is in the classpath and then provide our main class in the package.className format:

java -cp JarExample.jar com.baeldung.jar.JarExample

Using path separators instead of package format also works:

java -cp JarExample.jar com/baeldung/jar/JarExample

6.3. Listing the Contents of a Jar

We can use the jar command to list the contents of our jar file:

jar tf JarExample.jar META-INF/ META-INF/MANIFEST.MF com/baeldung/jar/JarExample.class

6.4. Viewing the Manifest File

Since it can be important to know what's in our MANIFEST.MF file, let's look at a quick and easy way we can peek at the contents without leaving the command line.

Let's use the unzip command with the -p option:

unzip -p JarExample.jar META-INF/MANIFEST.MF Manifest-Version: 1.0 Created-By: 1.8.0_31 (Oracle Corporation) Main-Class: com.baeldung.jar.JarExample

7. Conclusion

In this tutorial, we set up a simple Java application with a main class.

Then we looked at three ways of creating jar files: using the jar command, with Maven and with a Maven Spring Boot application.

След като създадохме нашите jar файлове, се върнахме в командния ред и ги стартирахме с изведен и посочен основен клас.

Също така научихме как да показваме съдържанието на файл и как да показваме съдържанието на един файл в буркан.

Както обикновеният пример за Java, така и примерът Spring Boot са достъпни в GitHub.