linuxjava如何打jar包
- Linux
- 2025-07-08
- 3310
javac编译Java源文件,再用
 jar命令打包成JAR文件,若需指定主类,还需创建清单文件
Linux系统中,将Java程序打包成JAR文件是一个常见的操作,它有助于将编译后的字节码文件、资源文件以及清单文件(Manifest)整合到一个可执行的归档文件中,以下是详细的步骤和说明:
准备工作
-  安装JDK:确保你的Linux系统上已经安装了Java Development Kit (JDK),你可以通过运行 java -version命令来检查是否已安装以及查看版本信息。
-  设置环境变量:如果还没有设置 JAVA_HOME环境变量,需要手动设置,可以使用以下命令:export JAVA_HOME=/path/to/jdk 将 /path/to/jdk替换为实际的JDK安装路径。
编写Java源代码
使用你喜欢的文本编辑器(如vim, nano, gedit等)创建一个Java源文件,例如HelloWorld.java,并编写你的Java代码。
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
} 
编译Java源代码
打开终端,导航到包含HelloWorld.java文件的目录,然后运行以下命令来编译Java源代码:
javac HelloWorld.java
这将生成一个名为HelloWorld.class的字节码文件。
创建清单文件(可选)
如果你的Java程序有一个入口点(即包含main方法的类),并且你希望在运行时指定这个入口点,那么你需要创建一个清单文件(Manifest),在终端中运行以下命令来创建并编辑Manifest.txt文件:
touch Manifest.txt nano Manifest.txt
在文件中添加以下内容,然后保存并关闭:

Main-Class: HelloWorld
这里的HelloWorld应该替换为你的主类的完全限定名(包括包名)。
打包成JAR文件
使用jar命令将编译后的字节码文件和清单文件(如果有的话)打包成JAR文件,有几种不同的打包方式,具体取决于你的需求:
-  基本打包:如果你不需要指定清单文件,可以直接使用以下命令: jar cvf HelloWorld.jar HelloWorld.class 这将创建一个名为 HelloWorld.jar的JAR文件,其中包含HelloWorld.class。
-  包含清单文件的打包:如果你创建了清单文件并希望在JAR包中指定入口点,可以使用以下命令: jar cvfm HelloWorld.jar Manifest.txt HelloWorld.class 这里的 -m选项用于指定清单文件。
-  打包整个目录下的所有类文件:如果你的项目中有多个类文件,并且它们都位于同一个目录下,你可以使用通配符来打包所有类文件:  jar cvf HelloWorld.jar .class 或者,如果你想要递归地打包当前目录及其子目录下的所有类文件,可以使用 -C选项:jar cvf HelloWorld.jar -C . . 注意:在使用 -C选项时,不要在命令末尾添加,否则会多出一个空的目录层。
-  打包包含依赖库的JAR文件:如果你的Java程序依赖于外部的JAR文件(如第三方库),你可以在打包时将这些依赖库也包含进去,假设你有一个依赖库 lib/commons-lang3.jar,你可以使用以下命令将其添加到你的JAR文件中:jar cvfm HelloWorld.jar Manifest.txt HelloWorld.class lib/commons-lang3.jar 这样,当你的JAR文件运行时,它就会自动包含这些依赖库。 
验证JAR文件内容
你可以使用以下命令来查看JAR文件中的内容,以确保所有必要的文件都已正确包含:
jar tf HelloWorld.jar
这将列出JAR文件中的所有条目。
运行JAR文件
一旦你成功创建了JAR文件,就可以使用以下命令来运行它:

java -jar HelloWorld.jar
如果一切设置正确,你应该会看到程序输出“Hello, World!”。
FAQs
Q1: 如果我没有指定清单文件,JAR文件还能运行吗?
A1: 是的,即使你没有指定清单文件,JAR文件仍然可以运行,但你需要确保在运行JAR文件时通过-cp选项指定正确的类路径,并且明确指出要执行的主类。
java -cp HelloWorld.jar HelloWorld
为了方便起见,通常建议在清单文件中指定主类,这样你就可以直接使用-jar选项来运行JAR文件了。
Q2: 我可以将多个依赖库一起打包到JAR文件中吗?
A2: 是的,你可以将多个依赖库一起打包到JAR文件中,只需在jar命令中列出所有你想要包含的依赖库即可。
jar cvfm MyApp.jar Manifest.txt MyApp.class lib/dep1.jar lib/dep2.jar
这样,当你的应用程序运行时,它就会自动包含这些依赖库,而无需你在运行时再
 
  
			