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-Class属性,该属性指定应用程序的主类。这行应该以”Main-Class: 类名”的形式出现,其中类名是主类的完全限定名称。通过在清单中包含这些信息,JVM将确切地知道如何找到主方法,从而使应用程序顺利运行。
- 解决这个错误的方法是更新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应用程序。