手动打war包

本文详细介绍了一个具体的WAR包构建过程,包括源代码目录结构、WAR包结构、编译步骤、整理待打包内容及最终的WAR包生成流程。适用于初学者了解如何将Java Web应用打包部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 背景

 有三个类,一个是Servlet类,两个Service类。要求将一个Service编程为class,将另一个Service打包为jar包。Servlet类是继承自HttpServlet类的。

源代码目录结构如下:

├── client
│   └── HelloWorldService.java
├── service
│   └── Service.java
└── service2
    └── Service2.java

 

  • war包结构

 目标war包结构如下:

WEB-INF
    ├── classes
    │   ├── client
    │   │   └── HelloWorldService.class
    │   └── service2
    │       └── Service2.class
    ├── lib
    │   └── service.jar
    └── web.xml

说明:目录名classes和lib都是固定名称,不能更改。不能在浏览器直接访问WEB-INF下的文件。一般将css和images放在WEB-INF外面。由于所有的class文件都有package,所以package同样需要在包里面。jar包里面同样包含service路径,以及service下面的Service.class文件。

  • 打包过程
    • 编译:将所有的java文件编译为class文件,并与源代码分开,放在out文件夹下。因为HelloWorldService.java依赖servlet-api.jar文件,我将这个jar文件放在与client平级的地方,便于编译。

命令如下:

mkdir out
javac -cp servlet-api.jar:. -d out client/HelloWorldService.java

-cp指定依赖的地址,点是指当前路径,-d是将源码与class文件分开,out是放class文件的文件夹,HelloWorldService.java是需要被编译的源文件。

编译后的目录结构:

├── client
│   ├── Client.java
│   └── HelloWorldService.java
├── out
│   ├── client
│   │   └── HelloWorldService.class
│   ├── service
│   │   └── Service.class
│   └── service2
│       └── Service2.class
├── service
│   └── Service.java
├── service2
│   └── Service2.java
└── servlet-api.jar

 

    • 整理待打包内容
mkdir WEB-INF
cd WEB-INF/
mkdir classes/client
mkdir classes/service2
mkdir lib
cd ../out
cp -r client/HelloWorldService.class ../WEB-INF/classes/client/
cp -r service2/Service2.class ../WEB-INF/classes/service2/
jar -cf service.jar service
cp -r service.jar ../WEB-INF/lib/
cd ../
cp web.xml WEB-INF/

整理后的WEB-INF的目录结构如下:

WEB-INF
    ├── classes
    │   ├── client
    │   │   └── HelloWorldService.class
    │   └── service2
    │       └── Service2.class
    ├── lib
    │   └── service.jar
    └── web.xml

 

    • 打包为war包

在于WEB-INF同级的目录下运行如下打包命令:

jar -cf hello.war WEB-INF/

hello.war是包的名称,必须只能把WEB-INF整个打包。

  • 发布到tomcat

 将hello.war拷贝到tomcat的webapps下面,启动tomcat,然后打开页面localhost:8080/hello/helloworld就可以验证是否打包成功了(我的web.xml里面配置的是helloworld)。

 

转载于:https://www.cnblogs.com/liqing172/p/3658494.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值