如何在 Linux 终端中创建并执行 .Jar 文件?
在 Linux 中创建和执行 .jar 文件是一个简单的过程,它将 Java 源代码的编译以及类文件和资源打包到单个文件中。使用终端,您可以轻松编译代码、创建 .jar 文件、使其可执行,并轻松运行 Java 应用程序。
JAR 格式(也称为 Java ARchive)提供了一种灵活且高效的方法,可将 Java 类文件、资源和元数据打包到单个与平台无关的文件中。这种格式的目的是简化 Java 运行时的分发和部署过程,同时还提供几个关键优势,例如增强的安全性、压缩以加快下载速度、支持包密封和版本控制以及可移植性。此外,JAR 文件还可以用于打包 Java 扩展。
在本文中,我们将引导您完成创建简单 Java 应用程序的过程,然后演示如何将其组装成 JAR 文件,以便为分发做好准备。最后,我们将向您展示如何使用 java 命令行工具和 -jar 标志从 Linux 终端运行 JAR 文件。需要注意的是,您需要安装 java 命令行工具以及 -jar 标志来执行 JAR 文件中封装的程序。使用此标志时,指定的 JAR 文件将成为所有用户类的源,并且忽略任何其他类路径设置。
首先,我们将首先创建一个包含 main 方法的基本 Java 类。该 Java 类将作为示例演示在 Linux 终端中创建和执行 .jar 文件所涉及的步骤。在本例中,我们将 Java 应用程序命名为“MyApp”。
$ vim MyApp.java
将以下代码合并到 MyApp.java 文件中。
public class MyApp{
public static void main(String[] args){
System.out.println("My Java Applicatoion");
}
}
编译 Java 源代码后,下一步是借助 javac 和 jar 实用程序将其打包成 JAR 文件,如前面的步骤所述。
$ javac -d . MyApp.java
$ ls
$ jar cvf myapp.jar MyApp.class
$ ls
或者
javac MyApp.java
jar cf myapp.jar MyApp.class
chmod +x myapp.jar
java -jar myapp.jar
现在 myapp.jar 文件已生成,可以使用简单的“java”命令运行它,如以下步骤所示。
$ java -jar myapp.jar
no main manifest attribute, in myapp.jar
上一步中遇到的错误凸显了在 .jar 文件中拥有正确清单的重要性。 JVM 需要指定一个主类,作为应用程序的入口点。如果没有此信息,JVM 无法在 .jar 文件中找到运行应用程序所必需的 main 方法。要解决此错误,必须将 Main-Class 属性添加到指定应用程序主类的清单文件中。该行的格式应为“Main-Class: classname”,其中 classname 是主类的完全限定名称。通过在清单中包含这些信息,JVM 将准确地知道在哪里可以找到 main 方法,从而使应用程序能够顺利运行。
该错误的解决方案在于更新 JAR 存档以包含清单属性和代码。这可以通过创建一个manifest.mf 文件来完成,该文件将用作JAR 文件的蓝图。
$ vim manifest.mf
“为了将必要的清单属性添加到 JAR 文件中,只需将指定的行复制并粘贴到 manifest.mf 文件中即可。”
Main-Class: MyApp
Manifest.mf 文件就位后,现在可以将其集成到 myapp.jar 中了。这可以通过执行以下命令来完成,该命令会将manifest.mf 文件包含到存档中。
$ jar cvmf manifest.mf myapp.jar MyApp.class
执行更新的 JAR 文件后,现在应该会生成所需的结果并显示在输出中,这标志着问题已成功解决。
$ java -jar myapp.jar
My Java App
要更深入地了解,请参阅 java、javac 和 jar 命令的手册页。
$ man java
$ man javac
$ man jar
结论
总而言之,JAR 文件格式提供了一种实用的解决方案,用于将多个 Java 类文件、资源和元数据捆绑到一个与平台无关的文件中进行分发。借助 java 命令行工具和 -jar 标志,您可以轻松部署完整的 Java 应用程序并享受其优势,包括安全性、压缩和可移植性。通过遵循本指南中概述的步骤,您现在对如何在 Linux 终端中创建和运行 JAR 文件有了深入的了解。这些知识将使您能够自信地轻松分发和部署您的 Java 应用程序。