java源代码转jar包

引入

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.youkuaiyun.com/MayData/article/details/53466126
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值