
如何 java 生成 jar
用户关注问题
我有一个用 Java 编写的程序,想要将它打包成一个 JAR 文件,方便运行和分发。应该怎样在命令行使用相关工具进行打包?
使用 javac 编译和 jar 命令打包程序
先使用 javac 命令将所有的 .java 文件编译成字节码文件(.class),比如:javac *.java。编译完成后,使用 jar 命令将这些 .class 文件打包成一个 JAR 文件,格式通常是:jar cf myapp.jar *.class,其中参数 cf 表示创建新文件和指定文件名。
我想确保打包成的 JAR 文件可以通过 java -jar 命令直接运行,需要让 JAR 文件知道程序的主类是哪一个,应该怎么操作?
通过修改 MANIFEST.MF 文件指定主类
需要在 JAR 文件的清单文件 MANIFEST.MF 中添加 Main-Class 属性,指明程序的主类。可以创建一个文本文件例如 manifest.txt,内容如下:
Main-Class: com.example.MainClass
然后在打包时带上该清单文件:jar cfm myapp.jar manifest.txt *.class。这会让 JVM 知道从哪个类的 main 方法开始执行。
如果项目使用了 Maven 或 Gradle 这些构建工具,如何配置生成可运行的 JAR 文件?
Maven 和 Gradle 配置示例
Maven 需要在 pom.xml 中配置 maven-jar-plugin 或 maven-shade-plugin 指定主类,并执行 mvn package 来打包。Gradle 则可以在 build.gradle 中的 jar 任务里设置 manifest 的 Main-Class 属性,然后运行 gradle build。构建工具能够自动处理依赖并生成标准的 JAR 文件。