jar 包与 war 包区别

Posted xy724518356

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jar 包与 war 包区别相关的知识,希望对你有一定的参考价值。

1、war是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块;jar一般只是包括一些class文件,在声明了Main_class之后是可以用java命令运行的。

2、war包是做好一个web应用后,通常是网站,打成包部署到容器中;jar包通常是开发时要引用通用类,打成包便于存放管理。

3、war是Sun提出的一种Web应用程序格式,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织;classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)可以打包成jar放到WEB-INF下的lib目录下。

JAR文件格式以流行的ZIP文件格式为基础。与ZIP文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。

格式特点

安全性

可以对 JAR 文件内容加上数字化签名。这样,能够识别签名的工具就可以有选择地为您授予软件安全特权,这是其他文件做不到的,它还可以检测代码是否被篡改过。

减少下载时间

如果一个 applet 捆绑到一个 JAR 文件中,那么浏览器就可以在一个 HTTP 事务中下载这个 applet 的类文件和相关的资源,而不是对每一个文件打开一个新连接。

压缩 JAR 格式允许您压缩文件以提高存储效率。

传输平台扩展 Java 扩展框架(Java Extensions Framework)提供了向 Java 核心平台添加功能的方法,这些扩展是用 JAR 文件打包的(Java 3D 和 JavaMail 就是由 Sun 开发的扩展例子)。

WAR文件就是一个Web应用程序,建立WAR文件,就是把整个Web应用程序(不包括Web应用程序层次结构的根目录)压缩起来,指定一个war扩展名。

建立的条件

需要建立正确的Web应用程序的目录层次结构。

建立WEB-INF子目录,并在该目录下建立classes与lib两个子目录。

将Servlet类文件放到WEB-INF\\classes目录下,将Web应用程序所使用Java类库文件(即JAR文件)放到WEB-INF\\lib目录下。

将JSP页面或静态html页面放到上下文根路径下或其子目录下。

建立META-INF目录,并在该目录下建立context.xml文件。

远程Debug项目(jar包和war包)

参考技术A 一.jar包的远程debug:
1.在pom文件中添加如下插件(直接复制即可)

<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9600</jvmArguments>
</configuration>
</plugin>
2.在idea上选择Remote并修改ip和端口为远程访问地址,注意:这里的端口不能与项目的端口一样,相当于重新使用另外一个端口作为该远程通信,不能占用项目本身的启动端口。

3.远程服务器上使用下面命令启动项目
java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=9600,suspend=n -jar cykj4app-1.0-SNAPSHOT.jar
4.项目启动成功后,在idea上启动连接,启动成功后即可访问接口在本地打断点调试

二.war包的远程debug
1.2.步骤同上
3.由于war包需要在tomcat上运行,所以先添加tomcat相关配置
①.修改tomcat bin下的startup.sh中的最后一行加上jpda启动
修改前:exec "$PRGDIR"/"$EXECUTABLE"start "$@"
修改后:exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@"
②.修改tomcat bin下的catalina.sh,(linux中输入:/为在文件中搜索:/JPDA_ADDRESS)搜索到JPDA_ADDRESS="localhost:8000",将其修改为你要配置的远程通信端口
修改前:JPDA_ADDRESS="localhost:8000"
修改后:JPDA_ADDRESS="9600"
4.修改完后启动tomcat即可在本地打断点调试
exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@"

三.连接成功如下图:

以上是关于jar 包与 war 包区别的主要内容,如果未能解决你的问题,请参考以下文章

java的war、jar、ear包的作用分别是啥?

远程Debug项目(jar包和war包)

maven中jar和war的区别

将项目打包成War包与打包成Jar包的区别及应用场景

springboot 发布 war jar区别

jar包与aar包文件的区别