Java如何实现将类文件打包为jar包

news2024/9/24 3:30:07
目录
  • 将类文件打包为jar包
    • 1.写类文件
    • 2.编译
    • 3.测试
    • 4.打jar包
  • jar包应该怎么打?
    • 1.首先确保你的项目
    • 2.选中你的项目,点右键
    • 3.选择runnable jar file
    • 4.如下图,直接看图
    • 5.然后点finish

将类文件打包为jar包

为实际项目写了一个工具类,但是每次使用时都需要打开项目点击运行。突然想,不如将这个类打成jar包这样后续就可以直接运行了。

说做就做。

1.写类文件

大概就这么个样子。

注意,这里用到了外部依赖,也就是为什么要写这篇文章的原因。

本例中的外部依赖包为:commons-codec-1.14.jar

2.编译

javac -encoding UTF-8 -classpath .;./commons-codec-1.14.jar -d . CipherTest.java

或者:

javac -encoding UTF-8 -cp .;./commons-codec-1.14.jar -d . CipherTest.java

  • encoding 防止中文乱码
  • -classpath 指定class文件路径
  • -d . 会在当前执行目录下生成 一个java所在的包名的(这里我的是test)目录,以及编译后的class文件
  • 指定要被编译的java文件

这样就编译为class文件了

3.测试

java -cp .;commons-codec-1.14.jar CipherTest 11 22 33

  • -cp 指定依赖包,多个用;分割
  • CipherTest: 是运行的主类,后面跟着命令行参数

这样测试就通过了。

4.打jar包

jar -cvf cipher.jar CipherTest.class

执行运行,发现找不到主类。解压查看jar包内容如下:

进入META-INF查看文件:

接下来对这个文件进行处理:

添加字段:

添加:

Main-Class: CipherTest

注意冒号后面有个空格,这个是指定主类,即启动类。

Class-Path: commons-codec-1.14.jar

指定依赖包,默认jar包根目录,有多个依赖的话,Windows用;分隔。Linux用空格分隔。

之后将依赖包拖入jar包。

最终目录结构:

最后运行jar包,正常工作。

jar包应该怎么打?

1.首先确保你的项目

能正常启动并运行

2.选中你的项目,点右键

选export(导出),如下图:

3.选择runnable jar file

下一步,如下图:

4.如下图,直接看图

5.然后点finish

后面一路过,不用管警告,一直点OK!

执行完这5步,在自己上面选择的路径下面就会有相应的jar包生成,如下图:

下面,我们来详细说明一下两种打jar包的方式有什么区别

首先,用自己的压缩工具打开刚才打成的jar包,可以看到一个MANIFEST.MF文件,如下图:

打开它之后的部分信息如下:

可以看到,这种方式把引用的jar包和自己的jar包都混合到了一起!(把需要的jar包和库提取到jar里)

再看另一种方式:

这种方式打成jar包后如下图:(将需要的jar包和库提取到子目录中)

两种方式都能正常启动,只是方式不一样!!!

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

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

相关文章

记录--一个好用的轮子 turn.js 实现仿真翻书的效果

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 国际惯例,官网链接 官网传送门 Github地址 github上有几个demos例子,介绍了基础用法。 我参考官网的例子,写了一个demo示例 安装 turn.js 依赖 jquery 库&#xff0…

C++设计模式之建造者设计模式

C建造者设计模式 什么是建造者设计模式 建造者设计模式是一种创建型设计模式,它是一种将复杂对象的分解为多个独立部分的模式,以便于构建对象的过程可以被抽象出来并独立变化。 该模式有什么优缺点 优点 灵活性:建造者设计模式允许对象的…

Nacos1.4.1集群——服务注册失败的原因

前言: 学习nacos的时候碰到的问题 当你单击启动的时候不会出现问题 命令: 单击: startup.cmd -m standalone 集群: startup.cmd -m cluster 当时当你启动集群的时候他会默认把你本地的ipv6那个地址默认放上出 会导致你本来搭建集群…

牛客网Verilog刷题——VL56

牛客网Verilog刷题——VL56 题目答案 题目 实现4bit无符号数流水线乘法器设计。电路的接口如下图所示: 输入输出描述: 信号类型输入/输出位宽描述clkwireInput1系统时钟信号rst_nwireInput1异步复位信号,低电平有效mul_awireInputsize乘数mu…

【动态规划part16】| 583.两个字符串的删除操作、72.编辑距离

🎈LeetCode583.两个字符串的删除操作 链接:583.两个字符串的删除操作 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 public int minDistance(String word1, Str…

基于Amoeba读写分离(三十六)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 今天要学的是基于Amoeba读写分离。Amoeba是一个开源的关系型数据库管理系统&#xf…

计网第四章网络层错题

4.1 没有要求结点要相邻,可不可靠主要取决于使用的协议,若使用有连接的 就可靠 2.C 本题易误选B 因为大家以为只能用ipv4 但是有特定的路由器可以连接IPv4和IPv6,所以网络层的协议也可以不同 C 路由器无法处理比网络层更高层次的数据 所以…

Redis集群Cluster搭建

Redis集群Cluster搭建 集群框架1、下载redis2.创建Cluster文件3.修改redis配置文件4.启动redis5.链接各个redis6.分配槽位7.添加从机节点(备份Redis)8.以集群方式登录9.使用开源Redis可视化客户端链接 集群框架 三个集群节点,每个节点有个副本…

Ubuntu安装MySQL 8.0与Navicat

目录 Ubuntu安装MySQL 8.0 1、更新软件包列表 2、安装 MySQL 8.0 3、启动 MySQL 服务 5、确保MySQL服务器正在运行 5、root 用户的密码 6、登录MySQL,输入mysql密码 7、MySQL默认位置 Ubuntu安装Navicat 1、下载 Navicat 2、额外的软件包 3、执行命令 U…

IDEA离线环境搭建远程开发-Windows

公司的云桌面实在太卡,多个微服务项目跑起来,直接无法进行其它编码工作,所以想到使用Idea提供的远程开发功能,将服务运行在服务器,电脑只提供给开发页面展示,提高效率。 环境介绍: 开发环境&…

python——案例六:清空列表用clear()方法实现

案例六:清空列表用clear()方法实现LIST[0,1,2,3,4,5] print(清空前:,LIST) LIST.clear() print(清空后:,LIST)

Carsim的基本功能介绍

Carsim 是一款汽车动力学模拟软件,它可以模拟车辆在路面上的运动和行驶行为,支持用户进行不同情况下的测试和研究。以下小师弟所了解的Carsim最基础的使用方法: 安装 Carsim 软件并打开。 Carsim是一个比较简单容易上手的软件,打…

保姆级教程,Linux服务器docker搭建jenkins持续集成一键部署SpringBoot项目(Gradle)

前言: 在后台项目开发过程从Java延伸到Kotlin开发,从maven pom到gradle,IDEA新项目SpringBoot init框架官方推荐kotlingradle,本章以此为jenkins持续集成做项目部署,服务器为Centos,JDK 17,Spr…

各种运算符

算术运算符 1.双目运算符 */%:从左到右优先级依次降低 一些注意事项: 1若a/b都为整型那么结果也为整型,如果ab其中有一个为实型,结果则为实型 求余运算符注意事项: 1运算对象必须为整数 2运算结果的整数跟左边数字的…

Go项目实现日志按时间及文件大小切割并压缩

关于日志的一些问题: 单个文件过大会影响写入效率,所以会做拆分,但是到多大拆分? 最多保留几个日志文件?最多保留多少天,要不要做压缩处理? 一般都使用 lumberjack[1]这个库完成上述这些操作 lumberjack //info文件wr…

linux用户密码存放在哪个文件

linux用户密码存放在“/etc/shadow”文件中。“/etc/shadow”文件又称为“影子文件”,用于存储Linux系统中用户的密码信息;该文件只有root用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性。 本教程操作环境&am…

IOS看书最终选择|源阅读转换|开源阅读|IOS自签

环境:IOS想使用 换源阅读 问题:换新手机,源阅读下架后,没有好的APP阅读小说 解决办法:自签APP 转换源仓库书源 最终预览 :https://rc.real9.cn/ 背景:自从我换了新iPhone手机,就无法…

iOS 搭建组件化私有库

一、创建私有库索引 步骤1是在没有索引库的情况下或者是新增索引的时候才需要用到(创建基础组件库) 首先在码云上建立一个私有库索引,起名为SYComponentSpec 二、本地添加私有库索引 添加私有库索引 pod repo add SYComponentSpec https:/…

fiddler 手机抓包(含https) 完整流程

第一部分:下载并安装fiddler 一.使用任一浏览器搜索【fiddler下载安装】,并下载fiddler 安装包。 二.fiddler安装包下载成功后,将下载的fiddler压缩包解压到自定义文件夹【fiddler】或者解压到当前文件夹下,双击文件夹中的【fidd…

工作记录------单元测试(持续更新)

工作记录------单元测试 之前的工作中从来没有写过单元测试&#xff0c;新入职公司要求写单元测试&#xff0c; 个人觉得&#xff0c;作为程序员单元测试还是必须会写的 于此记录一下首次编写单元测试的过程。 首先引入单元测试相关的依赖 <dependency><groupId>…