- Java 9 Programming By Example
- Peter Verhas
- 362字
- 2021-07-02 23:37:27
Packaging classes into a JAR file
When you deliver a Java application, usually the code is packaged into JAR, WAR, EAR, or some other packaged format. We learn something again that seems to be obscure at first sight, but in reality, this is not that complex. They are all ZIP files. You can open any of these files using WinZip or some other zip manager that you have a license for. The extra requirement is that, for example, in the case of a JAR file, the archive should contain a directory named META-INF and inside it a file named MANIFEST.MF. This file is a text file and contains meta information in the format, which is as follows:
Manifest-Version: 1.0
Created-By: 9-ea (Oracle Corporation)
There can be a lot of other information in the file, but this is the minimum that the Java provided tool jar puts there if we package our class file into a jar issuing the following command:
jar -cf hello.jar HelloWorld.class
The -c option tells the JAR archiver to create a new JAR file and the option f is used to specify the name of the new archive. The one we specified here is hello.jar and the file added to it is the class file.
The packaged JAR file can also be used to start the Java application. Java can read directly from JAR archives and load classes from there. The only requirement is that they are on the classpath.
Note that you cannot put inpidual classes on the classpath, only directories. As JAR files are archives with an internal directory structure in them, they behave like a directory.
Check that the JAR file was created using ls hello.jar and remove the rm HelloWorld.class class file just to ensure that when we issue the command line, the code is executed from the JAR file and not the class.
$ java -cp hello.jar HelloWorld
Hello World
To see the content of the JAR file, however, it is recommended that you use the JAR tool and not WinZip even though that may be cozier. Real professionals use the Java tools to handle Java files.
$ jar -tf hello.jar
META-INF/
META-INF/MANIFEST.MF
HelloWorld.class
- jQuery Mobile Web Development Essentials(Third Edition)
- 深入理解Java7:核心技術與最佳實踐
- Learning Zurb Foundation
- Building Serverless Applications with Python
- Python3.5從零開始學
- 創意UI:Photoshop玩轉APP設計
- 硬件產品設計與開發:從原型到交付
- 深入實踐DDD:以DSL驅動復雜軟件開發
- Practical Maya Programming with Python
- Mastering ASP.NET Core 2.0
- Modular Programming with JavaScript
- HTML5 WebSocket權威指南
- Web前端測試與集成:Jasmine/Selenium/Protractor/Jenkins的最佳實踐
- Android從入門到精通
- 人件集:人性化的軟件開發