项目背景
对于我们java程序员来说,JAR(Java ARchive)包我们很熟悉,我们有些时候,将项目部署到服务器的过程中,如果对于服务器有持续的继承环境的环境的话,服务器就是支持在线编译及其打包,就是我们只需要把最新的代码push上去即可,那么当其他的项目要依赖于此项目的时候,只需要编译打最新的包即可,如果服务器不支持在线编译和打包,那么我们只能自己上传依赖的JAR包。
JAR分类
首先我们要明白JAR分为可执行JAR和非可执行JAR,一个可执行的JAR文件是一个自包含的java程序,可以有JVM直接执行它而无需要是提取文件或者设置类路径。可执行的JAR文件中的MANIFEST.MF文件中指定了入口类,同时这个入口类一定是Main方法,而不能是其他的方法。
对于非执行JAR的程序,不需要配置MANIFEST.MF文件,只要将它加入到您的类路径中,并用++包名.类++名这种全路径的方式指定应用程序的主类。这个主类的方法也必须是一个Main方法,典型的调用非可执行JAR包的命令是java -cp xxx.jar "packageName.ClassName"
参考文献
http://codepub.cn/2016/05/11/The-correct-way-to-use-java-jar-run-an-executable-jar-package-under-Linux/