简介
Java 开发者常常需要将他们的应用程序打包成可执行的 JAR 文件,以便于分发和部署。本教程将指导你完成创建和运行可执行 JAR 文件的过程,帮助你掌握一项基本的 Java 编程技术。
理解可执行 JAR 文件
什么是可执行 JAR 文件?
可执行 JAR(Java 归档)文件是一种特殊类型的 Java 归档文件,无需显式调用 Java 虚拟机(JVM)即可直接从命令行运行。这是通过在 JAR 文件的清单文件中包含一个特殊条目来实现的,该条目指定要执行的主类。
为什么要使用可执行 JAR 文件?
可执行 JAR 文件有以下几个优点:
- 可移植性:可执行 JAR 文件可以在任何安装了 Java 运行时环境(JRE)的系统上运行,具有很高的可移植性。
- 易于分发:将应用程序打包为可执行 JAR 文件简化了分发过程,因为用户只需下载并运行该文件,无需复杂的安装过程。
- 依赖管理:可执行 JAR 文件可以在 JAR 文件中包含所有必要的依赖项,如图库和资源,确保自包含且可靠的部署。
可执行 JAR 文件的关键组件
可执行 JAR 文件由以下关键组件组成:
- Java 类文件:构成应用程序的已编译 Java 类文件。
- 库和依赖项:应用程序所需的任何外部库或依赖项。
- 清单文件:一个特殊文件,提供有关 JAR 文件的元数据,包括要执行的主类。
graph TD
A[Java 类文件] --> B[库和依赖项]
B --> C[清单文件]
C --> D[可执行 JAR 文件]
清单文件结构
名为 MANIFEST.MF 的清单文件位于 JAR 文件的 META-INF 目录中。它包含一组键值对,描述 JAR 文件的内容和属性。可执行 JAR 文件最重要的条目是 Main-Class 属性,它指定要执行的主类的全限定名。
Manifest-Version: 1.0
Main-Class: com.labex.app.Main
创建可执行 JAR 文件
准备应用程序
- 确保你的 Java 应用程序结构合理,包含主类和所有必要的依赖项。
- 编译你的 Java 源代码以生成类文件。
创建清单文件
- 在项目的
META-INF目录中创建一个名为MANIFEST.MF的新文件。 - 向清单文件中添加以下内容:
Manifest-Version: 1.0
Main-Class: com.labex.app.Main
将 com.labex.app.Main 替换为你应用程序主类的全限定名。
打包 JAR 文件
- 打开终端并导航到项目的根目录。
- 运行以下命令来创建可执行 JAR 文件:
jar cvfm app.jar MANIFEST.MF -C bin/.
此命令将在当前目录中创建一个名为 app.jar 的 JAR 文件,其中包含已编译的类文件和清单文件。
命令解析:
jar:Java 归档工具c:创建新归档v:详细输出f:指定输出文件名(app.jar)m:包含清单文件-C bin/.:切换到bin/目录并包含当前目录中的所有文件
验证可执行 JAR 文件
你可以使用以下命令验证 JAR 文件的内容:
jar tf app.jar
这将列出 JAR 文件中包含的所有文件和目录。
运行可执行 JAR 文件
运行可执行 JAR 文件
要运行可执行 JAR 文件,请执行以下步骤:
- 在你的 Ubuntu 22.04 系统上打开一个终端。
- 导航到可执行 JAR 文件所在的目录。
- 运行以下命令来执行 JAR 文件:
java -jar app.jar
将 app.jar 替换为你的可执行 JAR 文件的名称。
命令行参数
如果你的应用程序接受命令行参数,你可以在 java -jar 命令之后传递它们:
java -jar app.jar arg1 arg2 arg3
这些参数将被传递到你应用程序的主方法中。
故障排除
如果你在运行可执行 JAR 文件时遇到任何问题,可以尝试以下操作:
- 确保你的系统上安装了兼容的 Java 运行时环境(JRE)。
- 检查清单文件,以验证
Main-Class条目是否正确,并且与你应用程序主类的全限定名匹配。 - 使用
jar tf app.jar命令检查 JAR 文件的内容,以确保包含所有必要的文件。 - 查看你的应用程序的日志或控制台输出,以获取任何错误消息或有关问题的线索。
通过遵循这些步骤,你应该能够在你的 Ubuntu 22.04 系统上成功运行你的可执行 JAR 文件。
总结
在本 Java 教程中,你已经学会了如何创建和运行可执行 JAR 文件。通过理解将 Java 应用程序打包成自包含 JAR 文件的过程,你可以简化 Java 程序的部署和分发。对于想要将其应用程序无缝交付给最终用户或其他开发者的 Java 开发者来说,这项技能至关重要。



