开发中,习惯了各种工具的使用后,于是最基本的制作可运行jar的方式都忘的差不多了,回顾并记录下可运行jar的制作方式。
纯Java应用(手工操作)
可运行类编写
Java类执行的主入口便是main方法,于是可以写一个带有main方法的类,让我们从最熟悉的Hello World
写起,如下:
public class RunnableApp {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
将以上内容复制到文件中,修改文件名为RunnableApp.java
,然后执行javac RunnableApp.java
,会在当前路径生成一个RunnableApp.class
的文件,接着执行java RunnableApp
即可看到输出Hello World!
的文本信息,这样一个可执行的文件生成了,那么如果将文件打包到jar文件中呢?
将class文件打包到jar
将前面得到的RunnableApp.class
打包到jar中(命令行执行jar
查看参数明细),执行jar -cvf Runnable.jar RunnableApp.class
,如下图所示:
让我们运行得到的jar,将得到如下错误提示:
没有主清单属性,主清单属性是什么?大概就是一个描述文件的东西,记录了一些元数据信息,java -jar
通过这个固定的描述文件找到可执行的文件入口,更详细的信息请自行查阅,下面编写一个主清单(MANIFEST.MF),文件内容如下(注意冒号后的空格):
Main-Class: RunnableApp
然后将MANIFEST.MF
添加到前面打包的jar文件中的META-INF
目录下,执行jar -ufm RunnableApp.jar META-INF/MANITEST.MF
,然后再运行jar,java -jar RunnableApp.jar
,如下所示:
至此,复习了一遍java相关的基础命令,和可运行jar的纯手动制作方式,重点:可运行jar依赖一个注清单文件(描述文件),说明jar包内容的元信息,在执行java -jar
命令时,会找到该文件然后按文件描述内容执行相关操作。
Build Artifacts(IDEA)
在IDEA中新建一个空的Java工程,在src文件夹下一个main类文件RunnableJavaApp
,内容如下(注意:没有package包):
/**
* @author yuxiao
* @date 2022-07-18 23:02
*/
public class RunnableJavaApp {
public static void main(String[] args) {
System.out.println("Hello, RunnableJavaApp");
}
}
进入工程的Project Structure -> Artifacts -> 点击+号,如下图所示,按提示完成Main Class的选择,点击右下角的Apply 并 OK。
然后进入导航栏的Build->Build Artifacts…选项,然后点击Build进行打包,根据控制台的输出找到打包的jar文件。
进入打包好的jar目录,执行java -jar RunnableJavaApp.jar
,如下图所示:
至此完成了通过Build Artifacts
的方式制作一个可执行的简单jar包。