如何在 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 方法是运行应用程序所必需的。要解决此错误,必须向清单文件添加 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 应用程序。