Jar 打包与执行
Java学习笔记之一,用于个人记录。整理自《Head First Java》。
假设有如下目录结构:

程序入口在 Jukebox8.java。这个代码文件开头是有如下这样的包声明语句的:
package com.headfirstjava;
先进入到源码所在目录:
cd MyProject/source
1. 编译:
javac -d ../classes com/headfirstjava/Jukebox8.java
编译后会在classes目录下自动生成com目录,以及com下面的headfirstjava目录,并把相关的.class文件放在这个目录下:

2. 执行
cd MyProject/classes
java com.headfirstjava.Jukebox8
3. 创建JAR
3.1 要求:
- 所有相关的类文件都放在 class 目录下相对应的包结构当中
- 创建 manifest.txt 文件来描述哪个类带有 main(),格式如下:
Main-Class: com.headfirstjava.Jukebox8
当前环境下,要把 manifest.txt 文件放到 classes 目录下
3.2 执行 jar 命令创建 JAR 文件
cd MyProject/classes
jar -cvmf manifest.txt packEx.jar com
jar 是一个可执行命令
-cvmf 是 jar 命令可接受的参数
- c 表示 create,创建一个新的归档文件
- v 表示 verbose,在标准输出中显示创建过程
- m 表示指定 manifest 文件
- f 指定新的归档文件的名字
packEx.jar 是生成之后的 JAR 文件的名字,这个名字可以随便起的
com 表示要打包的文件夹,也即是项目的类文件所在的地方
上述命令执行完后,生成的 JAR 文件会放在当前目录下。为了方便起见,先把生成的 packEx.jar 文件移动到一个叫 Skyler 的新目录下
4. 解压
解压可以直接用一般的压缩软件来解压,就像解压 zip 压缩包一样
4.1 查看JAR文件的内容:
cd Skyler
jar -tf packEx.jar
- t 表示 table,即用表格的形式把归档文件中的文件列出来
- f 同前述,指定文件
4.2 解压 JAR 文件
jar -xf packEx.jar
- x 表示 eXtract,即提取
- f 同前述,指定文件
执行完后会生成两个目录,结构如下:

在META-INF目录下,有一个MANIFEST.MF文件,里面其实就相当于原来的 manifest.txt 的内容,不过更加丰富了。
而在com目录下,则与打包前的内容是一样的
5. 执行 JAR 包
java -jar packEx.jar
Jar 打包与执行的更多相关文章
- jar 打包后的文件执行时出现错误:RunJar jarFile [mainClass] args...
修改别人的jar包中的配置文件,然后再打包后执行出错:RunJar jarFile [mainClass] args... 经过分析,是因为打包时需要设置mainClass,可以通过如下方法: jar ...
- windows10计划任务启动bat执行jar打包的jar文件
今天公司要用bat文件执行jar打包的java文件,运行没项目的程序,并且用任务计划开机自启,今天记录下坑 系统:win10 一.编写.bat执行用jar打包的jar文件 @echo off java ...
- SpringBoot+Maven多模块项目(创建、依赖、打包可执行jar包部署测试)完整流程
一,创建Maven多模块项目先建立外层父工程 File →new →project 选择Spring Initializr Next下一步到以下页面 工程结构如下 ...
- maven打包可执行jar文件运行报错
起因 项目中同时依赖了Spring和MyBatis,并使用mybatis-spring集成MyBatis和Spring. 使用maven打包为可执行jar文件运行,打包插件为:maven-shade- ...
- spring boot项目maven打包可执行JAR
在pom.xml中添加如下配置: <!-- 打包可执行jar包 --> <plugin> <groupId>org.springframework.boot< ...
- springboot打包的问题可执行jar和不可执行jar
具体解释可以参看:https://www.cnblogs.com/liaojie970/p/9007577.html 如果只是想要依赖那么可以将springboot自带的打包插件换掉就可以了,换为如下 ...
- Apache Maven 打包可执行jar
在本文的 参考资料 部分,您将发现大量介绍 Maven 的入门教程.本文的 5 个技巧目的是帮助您解决即将出现的一些问题:使用 Maven 管理您的应用程序的生命周期时,将会出现的编程场景. 1. 可 ...
- idea打包 - 可执行jar包
需求:有一个基于SpringBoot的socket服务端程序,实现了对消息的接收.发送并行操作.此时想要将其构建成可执行的Jar包,执行 java -jar xx.jar后能够进行消息的收发. 分析: ...
- java基础篇-jar打包
以helloworld程序为例: 一:正常流程: 1.首先编写一个hello.java的程序: public class Hello { public static void main(String[ ...
随机推荐
- python BeautifulSoup 爬虫运行出现 exited with code -1073741571
首先,exited with code -1073741571意思是栈溢出.具体可以看https://blog.csdn.net/vblittleboy/article/details/6613815 ...
- Java生鲜电商平台-商品分类表和商品类型表的区别与数据库设计
Java生鲜电商平台-商品分类表和商品类型表的区别与数据库设计 二者服务的对象不一样 目的也是不一样的 商品分类是为商品服务的 用来管理商品 商品类型是为扩展属性服务的 用来管理属性 举例:[转] ...
- JS基础语法---练习:交换两个变量的值
* JavaScript简称为JS * JavaScript是什么? * 是一门脚本语言:不需要编译,直接运行 * 是一门解释性的语言:遇到一样代码就解释一行代码 * C#语言 ...
- 一次Ubuntu16系统的找回root密码的过程
一 背景知识介绍 ubuntn系统的默认配置,超级用户root的密码是随机的,如果没提前对root用户的密码进行设置, 是不能直接通过root的身份来进行某些操作的,必须使用sudo命令,并通过普通用 ...
- 使用Flask构建一个Web应用
Flask是一个使用Python编写的轻量级Web应用框架. 一.安装Flask 以管理员身份,打开命令提示符窗口,输入下面命令 py -3 -m pip install flask 这个命令会连接到 ...
- nginx 安装 lua_nginx_module 模块(nginx——lua 学习笔记1)
插入两个网站: nginx + lua 的OpenResty 开发 跟我学OpenResty(Nginx+Lua)开发目录贴 两个都是 可以根据目录一步步学习的. 1. 版本下载 nginx版本为 n ...
- 使用flask搭建微信公众号:完成token的验证
上一篇文章讨论了官方给的例子验证token失败的解决方法:微信公众号token验证失败 想了一下,还是决定不适用web.py这个框架.因为搜了一下他的中文文档不多,学起来可能会有点麻烦.而且看着他没有 ...
- (转)SpringMVC表单多对象传递小技巧——@InitBinder
转:https://www.jianshu.com/p/59771cbf373d 1.问题情景 项目中前端后台的数据传递是必不可少的,比如说我们要在一张表单中提交对象,如果只是一个对象就就很好做,因为 ...
- mysql autocommit
当autocommit为开启状态时,即使没有手动start transaction开启事务,mysql默认也会将用户的操作当做事务即时提交(自动帮我们 db.commit()) autocommit开 ...
- opencv 截取任意四边形区域的图像
截取任意四边形区域的图像. mask就是结果. 需要定义四边形区域,分别是 tl, tr, bl, br std::map<int, std::set<int>> genera ...