如何用jar命令对java工程进行打包

如何用jar命令对java工程进行打包

        有时候为了更方便快捷的部署和执行Java程序,要把java应用程序打包成一个jar包。而这个基础的操作有时候也很麻烦,为了方便java程序员们能够方便的打包java应用程序,下面对jar命令进行介绍,并举出几个简单例子针对不同情况进行打包。
        一. jar命令用法:
         在cmd命令窗口下输入jar,回车,就会提示改命令的用法:
        

        二.例子(这里介绍的都是生成双击可执行的jar包):
        1.首先介绍如何在命令行下执行打包程序。
        1.1.没有包结构的最简单的工程。
            (1)在c:盘下新建文件“HelloWorld.java”:
        

1 public class HelloWorld
2 {
3     public static void main(String[] args){
4         System.out.println("Hello world!");
5     }
6 }

            (2)在命令行下输入c:\javac HelloWorld.java,在c:盘下编译生成“HelloWorld.class”。

            (3)在c:盘下新建文件“menefest”(没有后缀名):
           

Main-Class: HelloWorld

            注意最后要有一个空行,否则会出现找不到类的错误。

             (4)打包:输入c:\jar cvmf menifest HelloWorld.jar HelloWord.jar HelloWorld.class,在c:盘下生成“HelloWorld.jar”。

             (5)执行:输入c:\java -jar HelloWord.jar。屏幕回显“HelloWorld”。

        1.2.有包结构的java工程。
            (1)在c:\com\gosyl\demo\下新建文件“HelloWorld.java”:
        

package com.gosyl.demo;

public class HelloWorld{
    
public static void main(String[] args){
        System.out.println(
"HelloWorld");
    }
}


            (2)在命令行下输入c:\javac com/gosyl/demo/HelloWorld.java,在c:\com\gosyl\demo\文件夹下编译生成“HelloWorld.class”。

            (3)在c:盘下新建文件“menefest2”(没有后缀名):
        

Main-Class: com.gosyl.demo.HelloWorld

            注意最后要有一个空行冒号后面要一个空格。否则会出现找不到类的错误。

            (4)打包:输入c:\jar cvmf menifest2 HelloWorld.jar HelloWord.jar com/,在c:盘下生成“HelloWorld.jar”。

            (5)执行:输入c:\java -jar HelloWord.jar。屏幕回显“HelloWorld”。

        1.3.引用到外部jar包的java工程。
            (1)在c:\com\gosyl\demo\下新建文件“Car.java”:
             

package com.gosyl.demo;

public class Car
{
    
public static void main(String[] args){
        Light.on();        
    }
}


            (2)在c:\com\gosyl\demo\下新建文件“Light.java”:
        

package com.gosyl.demo;

class Light 
{
    
public static void on(){
        System.out.println(
"Light is on!");
    }
}


            (3)打包1:输入c:\jar cvf  Light.jar com/gosyl/demo/Light.class,在c:盘下生成“Light.jar”。
        
            (4)在c:盘下新建文件“menefest-car”(没有后缀名):
        

Main-Class: com.gosyl.demo.Car
Class
-Path: Light.jar

            注意最后要有一个空行,冒号后面要一个空格。否则会出现找不到类的错误。

            (5)打包2:输入c:\jar cvmf  menifest-car Car.jar com/gosyl/demo/Car.class,在c:盘下生成“Car.jar”。
        
            (6)执行:输入c:\java -jar Car.jar。屏幕回显“Light is on”。

    三.总结
        1.清单文件menifest,对格式要求很高,注意每个冒号后面要有一个空格,文件最后要有一个空行。
        2.对于引用到外部jar包的工程,需要在manifest中定义好Class-Path属性。
        3.对于双击.bat文件出现刷屏现象的情况,请直接把.bat文件的内容键入命令行执行。
        4.对于重复签名的jar包,在META-INF里面会出现多个签名文件,删除掉多余的,保存其中一个才能保证jws正常启动。
        
       
请参照相关文章此文章貌似有错:

java项目打包与发行

转载于:https://www.cnblogs.com/langtianya/p/3172257.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474230.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 行程APP简单介绍

登录模块 数据库设计如图所示创建了如上的数据库由于没有注册功能人为添加了两个用户: 数据库创建语句: public static final String CREATE_task "create table user (" "id integer primary key autoincrement, ""remenber…

LeetCode 1561. 你可以获得的最大硬币数目

文章目录1. 题目2. 解题1. 题目 有 3n 堆数目不一的硬币,你和你的朋友们打算按以下方式分硬币: 每一轮中,你将会选出 任意 3 堆硬币(不一定连续)。Alice 将会取走硬币数量最多的那一堆。你将会取走硬币数量第二多的那…

微信小程序 地图组件使用

本地图程序利用map组件,以及使用它的markers,polyline属性分别设置地图两个位置的标志以及他们之间的连线,利用腾讯地图的API对两个地点进行查询,动态设置地图的经纬度,以及动态初始化markers,polyline属性。 程序运行截图如下&a…

LeetCode 1562. 查找大小为 M 的最新分组

文章目录1. 题目2. 解题1. 题目 给你一个数组 arr ,该数组表示一个从 1 到 n 的数字排列。有一个长度为 n 的二进制字符串,该字符串上的所有位最初都设置为 0 。 在从 1 到 n 的每个步骤 i 中(假设二进制字符串和 arr 都是从 1 开始索引的情…

DurOS语音开发

DuerOS语音开发项目,该项目通过搭载DuerOS开发者平台,利用平台开发的一组API规范,实现实时的语音播报功能。 整体流程示意图: 所用设备:树莓派微机系统、arduino与74HC595单片机、地图彩灯控制沙盘、小度语音。 数据流…

LeetCode 1563. 石子游戏 V(DP)

文章目录1. 题目2. 解题2.1 区间DP1. 题目 几块石子 排成一行 ,每块石子都有一个关联值,关联值为整数,由数组 stoneValue 给出。 游戏中的每一轮: Alice 会将这行石子分成两个 非空行(即,左侧行和右侧行…

个人简历小程序

为了熟练掌握微信小程序开发的一些基本技巧,熟悉微信小程序开发流程,特此,运用所学知识,做了一个个人简历小程序。 效果图如下: 代码如下: ① index.jsconst app getApp() Page({ data: { userInfo: {}…

Android的Fragment介绍

前言 fragment是从android3.0开始提出来的,用来支持大屏幕设备的ui设计。通过将activity划分为多个fragment,不仅提高了设计的灵活性,而且可以在程序运行时改变它们的特征,比如动态的修改,替换已有的fragment等等。 fr…

[Kaggle] Heart Disease Prediction

文章目录1. 数据探索2. 特征处理管道3. 训练模型4. 预测kaggle项目地址1. 数据探索 import pandas as pd train pd.read_csv(./train.csv) test pd.read_csv(./test.csv)train.info() test.info() abs(train.corr()[target]).sort_values(ascendingFalse)<class pandas.c…

01.神经网络和深度学习 W2.神经网络基础

文章目录1. 二分类2. 逻辑回归3. 逻辑回归损失函数4. 梯度下降5. 导数6. 计算图导数计算7. 逻辑回归中的梯度下降8. m个样本的梯度下降9. 向量化10. 向量化的更多例子11. 向量化 logistic 回归12. 向量化 logistic 回归梯度输出13. numpy 广播机制14. 关于 python / numpy 向量…

Oracle数据库物理存储结构管理遇到的问题与解决

问题一&#xff1a;当我创建一个重做日志文件放入重做日志文件组中的时候&#xff0c;查询数据字典发现新创建的重做日志文件的状态为“不合法”。 解决方案&#xff1a; 通过查阅相关资料了解到 新建的重做日志文件组成员状态为INVALID,这是由于新建的成员文件还没有被…

01.神经网络和深度学习 W3.浅层神经网络

文章目录1. 神经网络概览2. 神经网络的表示3. 神经网络的输出4. 多样本向量化5. 激活函数6. 为什么需要 非线性激活函数7. 激活函数的导数8. 随机初始化作业参考&#xff1a; 吴恩达视频课 深度学习笔记 1. 神经网络概览 xW[1]b[1]}⟹z[1]W[1]xb[1]⟹a[1]σ(z[1])\left.\begin…

01.神经网络和深度学习 W2.神经网络基础(作业:逻辑回归 图片识别)

文章目录编程题 11. numpy 基本函数1.1 编写 sigmoid 函数1.2 编写 sigmoid 函数的导数1.3 reshape操作1.4 标准化1.5 广播机制2. 向量化2.1 L1\L2损失函数编程题 2. 图片&#x1f431;识别1. 导入包2. 数据预览3. 算法的一般结构4. 建立算法4.1 辅助函数4.2 初始化参数4.3 前向…

PL/SQL程序设计以及安全管理实验遇到的问题及解决

问题一&#xff1a;当我书写PL/SQL语句调用所创建的函数时&#xff0c;报“此范围不存在名为XXX函数名”的错误。 解决&#xff1a; 我通过查阅相关资料&#xff0c;了解到&#xff1a;这种情况主要是调用的函数的参数或者函数名书写错误&#xff0c; 然而&#xff0c;我经过仔…

PowerDesigner使用教程 —— 概念数据模型 (转)

一、概念数据模型概述 概念数据模型也称信息模型&#xff0c;它以实体&#xff0d;联系(Entity-RelationShip,简称E-R)理论为基础&#xff0c;并对这一理论进行了扩充。它从用户的观点出发对信息进行建模&#xff0c;主要用于数据库的概念级设计。 通常人们先将现实世界抽…

阿里云 超级码力在线编程大赛初赛 第1场(第245名)

文章目录1. 比赛结果2. 题目1. 树木规划2. 正三角形拼接3. 大楼间穿梭4. 对称前后缀1. 比赛结果 通过了 3 题&#xff0c;第245名&#xff0c;进入复赛了&#xff0c;收获 T恤 一件&#xff0c;哈哈。 2. 题目 1. 树木规划 题目链接 描述 在一条直的马路上&#xff0c;…

01.神经网络和深度学习 W3.浅层神经网络(作业:带一个隐藏层的神经网络)

文章目录1. 导入包2. 预览数据3. 逻辑回归4. 神经网络4.1 定义神经网络结构4.2 初始化模型参数4.3 循环4.3.1 前向传播4.3.2 计算损失4.3.3 后向传播4.3.4 梯度下降4.4 组建Model4.5 预测4.6 调节隐藏层单元个数4.7 更改激活函数4.8 更改学习率4.9 其他数据集下的表现选择题测试…

[编程启蒙游戏] 2. 奇偶数

文章目录1. 游戏前提2. 游戏目的3. python代码1. 游戏前提 孩子知道奇偶数是什么&#xff0c;不知道也没关系 还可以采用掰手指演示&#xff0c;伸出两个手指能配对&#xff0c;所有伸出来的手指都两两配对了&#xff0c;伸出来的手指个数就是偶数如果还有1个没有找到朋友的手…