- JavaSE程序可以打包成Jar(J可以理解为Java);
- JavaWeb程序可以打包成war(W可以理解为Web),然后将war发布到Tomcat的webapps目录下,Tomcat会在启动时自动解压war包。
1. 什么叫做JAR
JAR(Java Archive,Java归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。为J2EE应用程序创建的JAR文件是EAR文件(企业JAR文件)。
jar包的结构JAR文件的目的是把类和相关的资源封装到压缩的归档文件中。
JAR文件格式以流行的ZIP文件格式为基础。与ZIP文件不同的是,JAR文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并且可以像编译器和JVM这样的工具直接使用。在 JAR 中包含特殊的文件,如 manifests 和部署描述符,用来指示工具如何处理特定的 JAR。
SpringBoot可执行jar包目录结构1.1 springBoot生成的可执行jar
SpringBoot提供的bootstrap的类是放到包的最外面,比如上面的org.springframework.boot.loader
。
应用程序的代码则是需要放到
BOOT-INF/classes
目录下面;然后应用程序依赖的其他的jar包文件需要放到BOOT-INF/lib
目录下。当这个jar作为standardalone的程序运行时(没有放到container),SpringBoot会在生成的META-INF/MANIFEST.MF
里面将Main-Class
设置成org.springframework.boot.loader.JarLauncher,JarLauncher类会创建一个spring自己的ClassLoader: LaunchedURLClassLoader
, 这个classloader 会就能通过URL来加载上面BOOT-INF/lib里面所依赖的包,并且通过反射Manifest里面的Start-Class里面定义的类,然后invoke这个类里面的main方法。
2. 什么叫做war包
对于WAR文件来说,一个WAR文件代表了一个Web应用程序,它可以包含 Servlet、HTML页面、Java类、图像文件,以及组成Web应用程序的其他资源,而不仅仅是类的归档文件。
war包中的文件按照一定目录结构来组织的。根目录下包含有html/jsp文件,或者包含有这两种文件的目录,另外还有WEB-INF目录。
war包结构在WEB-INF目录下含有一个web.xml文件和一个classes目录。web.xml是整个应用的配置目录,在classes目录下则包含编译好的servlet和jsp或者servlet所依赖的其他类(如JavaBean。通常这些所依赖的类也可以打包成jar包放在WEB-INF的lib目录下。
WEB-INF结构
war是一个可以直接运行的web模块,通常用于网站,打成包部署到容器中。以Tomcat来说,将war包放置在其/webapps/目录下,然后启动Tomcat,这个包会自动解压,就相当发布。
3. jar包和war包的区别
war包代表了一个WEB程序应用,jar是类的归档文件。
如果一个Web应用程序的目录和文件非常多,那么将这个Web应用程序部署到另一台机器上,就不是很方便了,这时可以将Web应用程序打包成Web 归档(WAR)文件,这个过程和把Java类文件打包成JAR文件的过程类似。利用WAR文件,可以把Servlet类文件和相关的资源集中在一起进行发布。在这个过程中,Web应用程序就不是按照目录层次结构来进行部署了,而是把WAR文件作为部署单元来使用。
网友评论