java命令行生成jar_命令行生成可执行的jar包

jar包

jar包分类

jar包分为可执行jar包和不可执行jar包

jar包解压后都有一个META-INF/MANIFEST.MF文件

可执行jar包和不可执行jar包的区别是MANIFEST.MF文件里有主类入口配置:Main-Class: com.example.MyClass

注意MANIFEST.MF配置后的冒号后有空格

可执行jar包,直接双击就可以运行,或者同目录下cmd中执行命令:java -jar jar包名.jar

如何生成jar包

(1)javac编译java文件

javac Hello.java

(2)将编译后的Hello.class文件打成jar包

jar -cvf hello.jar Hello.class

c表示要创建一个新的jar包,v表示创建的过程中在控制台输出创建过程的一些信息,f表示给生成的jar包命名

(3)运行jar包

java -jar hello.jar

这时会报如下错误 hello.jar中没有主清单属性

添加Main-Class属性

用压缩软件打开hello.jar,会发现里面多了一个META-INF文件夹,里面有一个MENIFEST.MF的文件,用记事本打开

1 Manifest-Version: 1.0

2 Created-By: 1.8.0_121 (Oracle Corporation)

3

在第三行的位置写入 Main-Class: Hello (注意冒号后面有一个空格,整个文件最后有一行空行),保存

再次运行 java -jar hello.jar ,此时成功在控制台看到 hello ,成功

附:

1 如果有多个java文件,则在编译的时候同时编译,然后将多个class文件同时打包,后续过程相同

2.如果多个java文件不在同一个文件夹,此时需要注意,他们编译后的class还在各自的文件夹,可以

javac A.java bbb/B.java -d target

编译到一个相同的文件夹

3.如果想加入jar,则在编译的时候

javac -cp A.jar B.java

并且在最终生成的jar包中修改MENIFEST.MF,在MENIFEST.MF文件中配置一个新属性:Class-Path,路径指向你需要的所有jar包,引入多个jar包,中间用空格隔开

1 Manifest-Version: 1.0

2 Created-By: 1.8.0_121 (Oracle Corporation)

3 Main-Class: B

4 Class-Path: A.jar

5

4.有的时候我们是在一些集成开发环境中拷贝一些java文件,编译出来的class文件是带着包名的,所以要在jar包中创建相应目录,把class文件移入相应的目录,并且修改MENIFEST.MF

1 Manifest-Version: 1.0

2 Created-By: 1.8.0_121 (Oracle Corporation)

3 Main-Class: com.example.lib.Main

4 Class-Path: A.jar

5

7.想读取jar包内的资源文件,getClass().getResourceAsStream("a.txt")的方法读取输入流

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值