当前位置: 首页 > news >正文

通过命令打Java可执行jar包

文章目录

          • 1.背景
          • 2.操作步骤
            • 2.1. 准备好java源文件
            • 2.2 确认java源文件中是否有包名
            • 2.3 编译java文件
            • 2.4 初步打包
            • 2.5 解压jar包,得到MANIFEST.MF文件
            • 2.6 修改MANIFEST.MF文件
            • 2.7 再次打包
          • 3.验证
          • 4.打包参数参考
          • 5.参考文章

1.背景

今天,无意中翻出了N年之前年少青涩时写的一个java awt的程序,在想验证某个问题的时候,希望它能以jar包的形式独立运行,而不是在ide中运行。所以就想把它手动打成可执行jar包。

2.操作步骤
2.1. 准备好java源文件

例如Hello.java

2.2 确认java源文件中是否有包名

源代码中有无包名,后面的操作有些许不同,注意区别。

2.3 编译java文件

进入test目录,执行如下命令,生成class文件

java Hello.java
2.4 初步打包

进入test目录,执行如下命令,初步生成jar文件,如果有多个class文件,则在命令最后加空格追加就可以

jar -cvf Hello.jar Hello.class

如果提示jar命令不存在,可以参考此篇文章解决执行jar命令报错:jar不是内部或外部命令,也不是可运行的程序

2.5 解压jar包,得到MANIFEST.MF文件

执行如下命令,在class文件同级目录会生成一个META-INF目录,里面有一个MANIFEST.MF文件。

jar -xvf Hello.jar
2.6 修改MANIFEST.MF文件

使用文件编辑器打开MANIFEST.MF文件,添加Main-Class内容
Hello.java里不带包名

Manifest-Version: 1.0
Created-By: 11.0.10 (Oracle Corporation)
Main-Class: Hello

Hello.java里带包名

Manifest-Version: 1.0
Created-By: 11.0.10 (Oracle Corporation)
Main-Class: test.Hello

修改完毕后记得保存。

2.7 再次打包

再次使用jar命令进行打包,这里同样要注意源代码中有无包名方法有所区别。

#Hello.java里不带包名,在java文件同目录执行
jar -cvfm Hello.jar META-INF/MANIFEST.MF Hello.class 
#Hello.java里带包名,在包名目录同级目录执行
jar -cvfm Hello.jar test/META-INF/MANIFEST.MF test/Hello.class
3.验证

使用java -jar Hello.jar或者直接双击jar包,能正常运行代表打包成功。

4.打包参数参考
-c  创建一个jar包
-t  显示jar中的内容列表
-x  解压jar包
-u  添加文件到jar包中
-f  指定jar包的文件名
-v  输出详细报告
-m  指定MANIFEST.MF文件
-0  生成jar包时不压缩内容
-M  不生成清单文件MANIFEST.MF
-i  为指定的jar文件创建索引文件
-C  可在相应的目录下执行命令
5.参考文章

Java:打包成jar包

http://www.lryc.cn/news/34941.html

相关文章:

  • java基础系列(九) 接口和抽象类
  • Docker启动问题docker is starting…
  • Django/Vue实现在线考试系统-03-开发环境搭建-MySQL安装
  • python实现波士顿房价预测
  • Pinia不酸,保甜
  • uniapp生命周期
  • 经典卷积模型回顾11—Xception实现图像分类(matlab)
  • 移动App性能测试包含哪些内容?App性能测试工具有哪些?
  • AI测试的迷思
  • [ 红队知识库 ] 一些常用bat文件集合
  • Qt广告机服务器(上位机)
  • SOA架构的理解
  • 如何选择一款数据库?
  • week2
  • JavaScript的学习
  • 用gin写简单的crud后端API接口
  • CF大陆斗C战士(三)
  • TTS | 语音合成论文概述
  • HTML第5天 HTML新标签与特性
  • java ee 之进程
  • Linux学习记录——십사 进程控制(1)
  • 使用 create-react-app 脚手架搭建React项目
  • inquirerjs
  • [数据库]内置函数
  • shell基本知识
  • Http长连接和短连接
  • [SQL Statements] 基本的SQL知识 之DDL针对表结构和表空间的基本操作
  • Git版本控制工具(详解)
  • 408考研计算机之计算机组成与设计——知识点及其做题经验篇目2:指令系统
  • Java语法中的方法引用::是个什么鬼?