引入

jar文件具有跨平台、数据压缩、多文件封装的优点,所以我们常将java源程序和其他的文件(比如资源文件、签名)打包到一起,变成jar包。这样对java程序的部署会更方便,也更安全。

用IDEA等IDE,可以直接将java文件转换为jar包。本文讲解如何用JDK命令来转换。

本文实验环境

  • windows10
  • JDK

最简单的jar包

jar包中可以含有很多文件(具体见[1]),最简单的jar包,就只含有class和META-INF/MANIFEST.MF。

  1. 写一个Hello.java
public class Hello
{public static void main(String[] args){System.out.println("hello ybdesire");}
}
  1. 将Hello.java转换为Hello.class
E:\one_class>javac Hello.java
  1. 将Hello.class打包jar

用jar命令,具体如下

E:\one_class>jar -cvf hello.jar Hello.class
added manifest
adding: Hello.class(in = 418) (out= 288)(deflated 31%)

其中参数c表示要创建一个新的jar包,v表示创建过程详细内容输出,f表示对jar包命名。

  1. 运行jar包

用java命令加-jar参数来运行jar包,如下

E:\one_class>java -jar hello.jar
no main manifest attribute, in hello.jar

被告知,jar包中缺少main manifest参数。

  1. 在jar包中添加参数

用7zip打开hello.jar文件,右键选中META-INF/MANIFEST.MF的编辑。

原始内容如下(注意最后一行为空行):

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

在最后一行插入Main-Class: Hello,并留一行空行。改动后的内容为:

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

保存修改到jar包。

  1. 运行改动后的jar包

用java命令加-jar参数来运行jar包,如下,得到最终结果

E:\one_class>java -jar hello.jar
hello ybdesire

将在windows10上打包的hello.jar移动到ubuntu 16.04,仍然可以用如上命令来运行,因为jar是跨平台的。

补充:.class文件也是跨平台的。

参考

  • [1] jar细节:https://www.ibm.com/developerworks/cn/java/j-jar/index.html
  • [2] jar打包过程:https://www.cnblogs.com/flashsun/p/7246260.html
  • [3] dex/jar转换:https://blog.csdn.net/MayData/article/details/53466126

java源代码转jar包相关推荐

  1. 如何根据jar包的名称找到包含对应源代码的jar包

    我们经常在trouble shooting时,需要进入依赖的java库文件的源代码内进行调试,如下图所示,Eclipse提示需要指定包含了源代码的jar包:C:/temp/httpclient-4.5 ...

  2. java项目打jar包

    http://www.cnblogs.com/tianguook/archive/2012/03/14/2396335.html java项目打jar包分为2种情况: 一.java项目没有导入第三方j ...

  3. java项目打jar包的两种情况

    java项目打jar包的两种情况 本文介绍一下java项目打jar包时的两种情况各怎么操作 方法/步骤 1.  1 一.java项目没有导入第三方jar包 这时候打包就比较简单: 1.  首先在Ecl ...

  4. Java常用开源jar包

    Java常用开源jar包 转:http://blog.csdn.net/kevingao/article/details/8125683 activation~与javaMail有关的jar包,使用j ...

  5. Eclipse中将java类打成jar包形式运行

    记录一次帮助小伙伴将java类打成jar包运行 1.创建java project项目 file > new > project > java project 随便起一个项目名称,fi ...

  6. idea 执行 java jar_idea打包java可执行jar包的实现步骤

    1,在项目上鼠标右键 --> Open Module Settings 2, Artifacts --> + --> JAR --> From modules with dep ...

  7. java项目添加jar包

    java如何导入jar包 X1: 在java工程中怎么导入jar包 1. 项目名称上单击右键,点击properties. 2 .点击"Java Build Path",点击&quo ...

  8. 打包部署后无法读取jar包里的文件(实测可行,Java中读取jar包中的文件)

    打包部署后无法读取jar包里的文件 Java中读取jar包中的文件 linux中无法读取jar包中的内容(windows可以的!),如何解决 一.背景 项目中免不了需要读取文件,如果文件用绝对路径读取 ...

  9. 将java文件打成jar包

    新建一个配置文件mainfest.mf 设置内容Main-Class: Str2CamelCaseStr 把配置文件放到编译好的java文件 xxx.class同目录下面 到当前目录打开命令窗口 执行 ...

最新文章

  1. Science论文:诺奖经济学家的经典决策模型,被AI挑战
  2. Struts2 单个文件上传/多文件上传
  3. lisp修改界址线属性_如何获取界址线的界址线位置等扩展属性
  4. 带有Gradle的Spring Boot Web应用程序
  5. 【转】刨根究底字符编码之十——Unicode字符集的字符编码方式
  6. c#使用Path.Combine的一个坑
  7. oracle保存type类型,oracle type类型
  8. 深入解析:MySQL对分布式事务 XA Transactions 的支持
  9. 20个 CSS 快速提升技巧
  10. SyntaxError: Missing parentheses in call to 'print' 这个错误原因是Python版本问题
  11. 计算机切换用户屏幕闪,小编教您Win10切换用户后闪屏的具体办法
  12. 网管实战(9):网关地址的设置
  13. 【三】多线程 —— 设计模式
  14. JVM(2):垃圾收集器与gc
  15. 企业邮箱登录入口有哪些?
  16. 无光驱,硬盘安装XP完整原版
  17. 七届世界冠军迈克尔-舒马赫将正式退役
  18. OSChina 周一乱弹 —— T恤能穿出立体感来
  19. JS流程控制语句 反反复复(while循环) 和for循环有相同功能的还有while循环, while循环重复执行一段代码,直到某个条件不再满足。...
  20. vue.js动态设置VueComponent高度遇到的问题

热门文章

  1. SEI、Envestnet、AssetMark2019年度观察 ——美国TAMP行业代表性公司对比分析
  2. 编译内核发现wireless_send_event未定义错误
  3. Android 输入法 控制 切换
  4. 什么是HTTP协议?—深入理解HTTP协议
  5. 韩顺平JAVA-D5
  6. Excel 2016新增图表攻略
  7. VS2017 winform开发知识点汇总
  8. 限制VB文本框输入的代码
  9. Windows 10 下C盘空间清理全攻略(Win10 C盘清理 )
  10. jsp+ssm计算机毕业设计宠物医院管理系统【附源码】