如何将java或javaweb项目打包为jar包或war包

目录
  • 一、为什么打包
  • 二、如何打包
    • 1、打成jar包
      • 1.1、使用jar手动打包
      • 1. 2、使用IDEA进行打包
    • 2、打成war包

一、为什么打包

关于此问题,网上众说纷纭。结合个人理解以及网上说法,打成jar包是为了方便别人使用。 如果是运行java程序,就不需要在寻找包含main方法的类去执行;如果是使用第三方jar包,直接在自己项目中导入jar包,而不是复制一堆类文件。打成war包是真实生产环境选择的web应用部署方式,网上说这样不会像直接复制文件夹那样可能造成文件丢失,而且服务器会对应用做优化,如删除空文件夹等。以上仅供了解。

二、如何打包

本机环境windows 10, jdk 1.8

打成jar或war包使用的是相同的工具 jdk/bin/jar.exe

1、打成jar包

|-----------------可以略过,仅为了方便理解打包需要注意的事项------------------|

项目简介

数据库表结构及其建表语句

CREATE TABLE `customer`  (
  `cust_id` int(11) NOT NULL AUTO_INCREMENT,
  `cust_name` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `cust_address` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `cust_city` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `cust_state` char(5) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `cust_zip` char(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `cust_country` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `cust_contact` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `cust_email` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`cust_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 10006 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

INSERT INTO `customer` VALUES (10001, 'Coyote Inc.', '200 Maple Lane', 'Detroit', 'MI', '44444', 'china', 'Y Lee', 'ylee@coyote.com');
INSERT INTO `customer` VALUES (10002, 'Mouse House', '333 Fromage Lane', 'Columbus', 'OH', '43333', '', 'Jerry Mouse', NULL);
INSERT INTO `customer` VALUES (10003, 'Wascals', '1 Sunny Place', 'Muncie', 'IN', '42222', 'USA', 'Jim Jones', 'rabbit@wascally.com');
INSERT INTO `customer` VALUES (10004, 'Yosemite Place', '829 Riverside Drive', 'Phoenix', 'AZ', '88888', 'UK', 'Y Sam', 'sam@yosemite.com');
INSERT INTO `customer` VALUES (10005, 'gzn or 1=1', '4545 53rd Street', 'Chicago', 'IL', '54545', '', 'E Fudd', NULL);

项目结构

app.java

package com.gzn.demo;

import java.sql.*;
import java.util.Scanner;

/**
 * @author: gzn
 * @date: 2019/4/13 10:53
 */
public class App {
    public static void main(String[] args) {

        int count = Integer.valueOf(args[0]);
        System.out.println("请输入要查询用户的条数?(0到5之间):");
        Scanner sc = new Scanner(System.in);
        int count = sc.nextInt();

        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/corejava";
        String username = "root";
        String password = "root";
        String sql = "select cust_id, cust_name, cust_address, cust_city from customer limit 0, ? ";

        try {
            Class.forName(driver);
            Connection conn = DriverManager.getConnection(url, username, password);
            PreparedStatement pstat = conn.prepareStatement(sql);
            pstat.setInt(1, count);
            ResultSet rs = pstat.executeQuery();
            while(rs.next()) {
                System.out.println("cust_id:" + rs.getObject("cust_id").toString());
                System.out.println("cust_name: " + rs.getObject("cust_name").toString());
                System.out.println("cust_address: " + rs.getObject("cust_address").toString());
                System.out.println("cust_city:" + rs.getObject("cust_city").toString());
                System.out.println("----------------------" +"\n");
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}

|---------------------------------------------------------------------------|

1.1、使用jar手动打包

(1)使用cmd找到项目编译输出的路径

(2) 在该目录下运行命令 jar -cvf helloworld.jar .

-c (create,创建)表时要创建文件
-v (verbose,冗长的,详细的) 在控制台打印压缩详情
-f (filename)指定压缩文件名
helloworld.jar 文件名可以自定义
. 表示helloworld目录下的所有文件,这里一定要写“.”,其他可能出错。(补充,*星号也可以)

至此打包成功,但不能运行。想要可以运行还要修改helloword.jar中的MANIFEST.MF文件。

(3)使用解压缩工具打开helloword.jar并编辑META-INF/MANIFEST.MF添加属性

MANIFEST.MF初始状态

Manifest-Version: 1.0
Created-By: 1.8.0_161 (Oracle Corporation)

添加属性:(注意,冒号为英文冒号且冒号后有空格

Main-Class: 包含main方法的类
Class-Path: 依赖的jar包的路径,如果依赖多个jar包,使用空格隔开
路径:相对路径,jar包相对于helloworld.jar文件的路径
           绝对路径,jar包在操作系统中的路径
常用相对路径,将依赖的jar包和自己的jar包放在同一级目录下,这样Class-Path直接写依赖jar包的名字即可。

添加属性后状态:

Manifest-Version: 1.0
Created-By: 1.8.0_161 (Oracle Corporation)
Class-Path: mysql-connector-java-5.1.18.jar
Main-Class: com.gzn.demo.App

(4)运行测试
将依赖复制到helloworld.jar 同级目录下,使用 java -jar helloworld.jar 运行程序。

如果jar包仅是为了供其他开发者使用,不需要运行,则进行到第(2)步即可。

1. 2、使用IDEA进行打包

Main Class: 包含main方法的类;
extract to the target JAR: 提取目标jar,此选项需要你为依赖的jar配置绝对路径。
copy to the output directory and link via manifest: 将依赖的jar复制到输出目录中,即和你项目打包的jar在同一级目录。这样IDEA就可以在MENIFEST.MF为Class-Path属性直接配置相对路径。

Output Directory: 打包后的输出路径。

运行测试:

首先进入jar包输入路径C:\Users\gzn\Desktop\helloworld\out\artifacts\HelloWorld_jar;
运行 java -jar helloworld.jar;

2、打成war包

comment是我的一个已将编译好的web项目,使用cmd进入comment目录下执行命令

jar -cvf comment.war .


注意在项目目录下执行命令, “.” 表示对项目目录下的所有文件进行打包,将打包好的项目复制到Tomcat/webapps目录下,启动Tomcat服务器,就可以进行测试了。

到此这篇关于如何将java或javaweb项目打包为jar包或war包的文章就介绍到这了,更多相关java打包为jar包或war包内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • idea打包java程序(包含依赖的所有jar包)

    Intellij Idea打包Java项目 打开模块设置 如下图所示,选中需要打包的模块,右键点击,即会出现如下图所示的内容,点击Open Module Settings. 创建Artifacts 配置Jar包信息 注意配置输出路径 Output directory: 移动依赖Jar包到指定文件夹中并配置路径 如下图所示,将项目依赖的Mysql驱动包移动到library文件夹中.方法是只需要在上右键点击创建文件夹,然后将第三方的Jar包拖动进入此文件夹即可. 并且点击图中马赛克部分的那个Jar文

  • java打包成jar并执行jar包中指定的main方法

    java打包成jar jar -cvf [jar包的名字] [需要打包的文件] 执行jar包中的main方法 java -jar ****.jar 执行后总是运行指定的主方法,如果 jar 中有多个 main 方法,那么如何运行指定的 main 方法呢? 用下面的命令试试看: java -classpath ****.jar ****.****.className [args] "****.****"表示"包名": "className"表示&q

  • idea打包java可执行jar包的实现步骤

    1,在项目上鼠标右键 --> Open Module Settings 2, Artifacts --> + --> JAR --> From modules with dependencies... 3, Main Class是你这个项目(脚本)的主方法,就是要运行的类,选一个 4,如下图,设置 META-INF/MANIFEST.MF !!!!!切记,不能用默认的(起码我用默认的是不成功的)!!!!! 6,选中你这个项目的根目录,一定要放在根目录下 7,设置完是这样子的,关于

  • 将Java项目打包成可执行的jar包

    一.通过 eclipse 自带打包 测试项目: Main.java package com.bug; import org.junit.Test; public class Main { public static void main(String[] args) { test(); } @Test public static void test() { System.out.println("HelloWorld"); System.out.println("HelloWo

  • Java打包工具jar包详解

    Java打包工具是Java开发工具中比较常用的一种,代码重新打包工具jarjar可以帮助你将其它用到的java库打包并嵌入到你自己的项目jar包中.这样做的原因有: 当你发布项目的时候,把用到的库打包进现有项目jar包,可以让发布的这个jar包不比依赖于其它项目的jar包; 当你所用到的java库升级了以后,它所新发布的jar包可能和你现存的项目不匹配,为了保持项目的代码稳定性,你可以把编写代码时所用到的依赖jar包,全部打包进现在的项目jar包,以避免出现这个问题. jarjar可以通过Ant

  • 在idea中将java项目中的单个类打包成jar包操作

    JAR文件的全称是Java Archive File,即Java档案文件.JAR文件是一种压缩文件,与常见的ZIP压缩文件兼容,被称为JAR包. JAR文件与zip文件的主要区别是在JAR文件中默认包含了一个名为META-INF/MANIFEST.MF的清单文件,这个清单文件是在生成JAR文件时系统自动创建的. 打包jar包 1.先创建一个要打包成jar包的类 2.File -> Project Structrue -> Artifacts -> + -> JAR -> fr

  • Java打包Jar包后使用脚本执行

    打包jar包的应用场景: 有时候,我们需要将一个java工程,放在服务器上让它执行.我们知道在IDE中,都是人为操作,执行这个程序.但是如果没有IDE环境,那么怎么执行Java工程呢? 这里,介绍一种jar包打包,并利用cmd执行的方式运行. 本文的IDE开发环境为Eclipse,所以idea环境开发的同学可能不太一样. 工程建好之后,结构图如下: 1,创建并编辑MANIFEST.MF文件 如果没有MANIFEST.MF文件,就需要先创建该文件.该文件的主要作用就是指定依赖项的路径以及程序执行的

  • Java命令行下Jar包打包小结

    jar包打包实现 jar包打包可以使用jar指令实现打包,在命令行中输入jar可以查看jar指令的内容 从最后显示的两个示例看出存在两种打包的方法,两者的区别就是是否使用自己定义的MANIFEST清单文件.第一个示例没有使用MANIFEST文件进行打包,所以最终生成的jar包中MANIFEST文件为默认文件,这种方式适用于比较简单的jar包结构,不存在其他jar包依赖以及生成的jar包不需要可执行.这种方式生成的jar包不能使用java -jar XXX.jar命令执行,因为MANIFEST文件

  • 如何将java或javaweb项目打包为jar包或war包

    目录 一.为什么打包 二.如何打包 1.打成jar包 1.1.使用jar手动打包 1. 2.使用IDEA进行打包 2.打成war包 一.为什么打包 关于此问题,网上众说纷纭.结合个人理解以及网上说法,打成jar包是为了方便别人使用. 如果是运行java程序,就不需要在寻找包含main方法的类去执行:如果是使用第三方jar包,直接在自己项目中导入jar包,而不是复制一堆类文件.打成war包是真实生产环境选择的web应用部署方式,网上说这样不会像直接复制文件夹那样可能造成文件丢失,而且服务器会对应用

  • 详解Java Project项目打包成jar,并生成exe文件

    初衷: 工作中写一些辅助工作的小工具时,将其打成exe,方便使用 准备工作: Eclipse,jdk,net.sf.fjep.fatjar_0.0.32.jar,exe4j.exe 1 将项目打包成jar文件: 1.1 用Eclpise的Export功能生成jar(单纯生成jar包时推荐) 目录结构 右击项目,选择Export 只留java文件 默认next到finish,有两种处理方式 方式一:自动生成MANIFEST.MF(默认的) 方式二:自己写MANIFEST.MF(可以写一些自己想要的

  • Java结合Vue项目打包并进行服务器部署

    目录 Java后端项目打包和服务器部署 Vue项目服务器部署 两周前我刚刚入职实习的时候,后端的几个同事看到我需要学习如何把项目进行部署,都围过来教我怎么部署,我感觉学习到了很多,因此,记录一下学习的笔记.当然了,这些部署是建立在已经配置好tomcat(后端服务器)和nginx(前端服务器)的基础之上的,因为公司之前已经做好了,我只需要迭代即可. Java后端项目打包和服务器部署 1.IDEA点击maven,然后点击clean,接着点击package打包获得cr.war(在项目根目录的targe

  • AndroidStudio项目打包成jar的简单方法

    首先备注一下 JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件.为 J2EE 应用程序创建的 JAR 文件是 EAR 文件(企业 JAR 文件). 什么是AAR,与JAR区别 *.jar:只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件. *.aar:包含所有资源,class以及res资源文件全部包含 Android Studio 如何打JAR包 在eclipse中我们知道如何将一个项目导出为jar包,供

  • 详解eclipse将项目打包成jar文件的两种方法及问题解决方法

    第一种:利用eclipse中自带的export功能 第一种方法分两种情况先来看第一种情况:没有引用外部jar的项目打包 步骤一:右键点击项目选择导出(export),选择java>jar文件(不是选择可运行jar文件) 步骤二:选择你要导出的项目以及文件,指定文件导出路径.连续点击两个下一步后到第四步. 步骤三:选择主类. 按照以上步骤即可完成对一个不引用外部jar项目的打包. 第二种情况:没有引用外部jar的项目打包 当我们引用了外部jar后,使用eclipse自带的export打包略显繁琐.

  • IDEA 将 SpringBoot 项目打包成jar的方法

    新建SpringBoot项目:IDEA 创建 SpringBoot 项目 一.打包配置 1.File -> Project Structure 2.Project Structure 3.设置启动类及META-INF 根据 modules 创建 jar.如图所示,选择项目,入口类等.最后一项 META-INF 默认放到 src\main\java 目录里,如果使用默认值,没有进行其他配置,生成的 jar 有可能不会包含 META-INF 目录,导致运行 jar 出错,正确的是将 META-INF

  • 项目打包成jar后包无法读取src/main/resources下文件的解决

    目录 一.项目场景 二.问题描述 发现问题 分析问题 为什么使用 ClassPathResource 后, 可以找到打包后的文件路径? 三.解决方案 方案一 方案二 意外出现 总结 一.项目场景 在项目中读取文件时, 使用new File() 出现的一个坑以及解决流程这种问题不仅在本地文件读取时会遇到, 而且在下载项目下 (例如: src/main/resources目录下) 的文本时, 也会遇到, 二.问题描述 发现问题 原来代码该代码功能是利用 common.io 包下的FileUtils来

  • springboot项目打包成jar包的图文教程

    目录 一.为什么打包 二.如何打包 (1)使用IDEA进行打包 (2)使用maven进行打包 三.运行jar包 四.注意 一.为什么打包 项目开发完毕后会将前后端应用打包,然后部署到服务器上运行.Java Web应用在Spring Boot之前,通常是打包成war包,结合Tomcat来完成部署.而对于SpringBoot,官方的建议是将Spring Boot应用打包成一个fat jar(SpringBoot默认打包方式),即项目的依赖jar包也会被包含在Spring Boot项目的jar包当中,

  • 浅谈maven的jar包和war包区别 以及打包方法

    jar文件包括java普通类.资源文件和普通文件,在maven中即是打包src/main/java和src/main/resources资源文件夹下的所有文件.在打包的时候会自动生成MATA-INF文件夹,用于存储maven的pom信息和MANIFEST.MF文件.例如: war文件包含全部的web应用程序,即所有的java类,配置信息和jsp.js等静态资源.但是需要注意war引用war的时候会将应用war的资源全部拷贝到当前war的相同文件下,重名的文件会被替换.例如: war包依赖: <d

  • SpringBoot工程搭建打包、启动jar包和war包的教程图文详解

    工程搭建 1.File->new->project: 2.选择"Spring Initializr",点击next:(jdk1.8默认即可) 3.完善项目信息,组名可不做修改,项目名可做修改:最终建的项目名为:test,src->main->java下包名会是:com->example->test:点击next: 4.Web下勾选Spring Web Start,(网上创建springboot项目多是勾选Web选项,而较高版本的Springboot没

随机推荐