超级实习生计划学习笔记——Java程序编译及打包

一、Java程序编译
使用javac会默认编译到同一个文件目录,要想进行不同目录的编译需要执行以下命令:
-d <目录> //指定放置生成的类文件的位置

1.无包名的类编译:
javac -d target src/Hello.java //target为<想要存放class的目录>,src为<存放java文件的目录>

2.有包名的多个类编译:
javac -d target src/Hello.java src/start/World.java -encoding utf-8
(package start;)

3.使用第三方jar包的类编译:
javac -d target src/rand/Rand.java -encoding utf-8 -classpath lib/*

二、构建jar包


1.不指定MANIFEST.MF构建jar包
jar -cvfe abc.jar start.World -C target/ .
(c创建v详细输出f指定jar包名称e指定入口类)
(-C xx/ .切换到xx目录并将目录下所有东西打包)
(打包成功后会自动生成一个只有入口类没有搜索路径的MANIFEST.MF文件)

jar -cvf rand.jar -C target/ rand/Rand.class
(打包成功后自动生成一个空的MANIFEST.MF文件)

2.指定MANIFEST.MF构建jar包
jar -cvfm rand.jar META-INF/MANIFEST.MF -C target/ rand/Rand.class
(META-INF目录中带有自定义的MANIFEST.MF文件)

Class-Path:
应用程序或者类装载器使用该值来构建内部的类搜索路径,注意:只有此处不能使用通配符lib/*.jar或lib/*
Main-Class:
定义jar文件的入口类,该类必须是一个可执行的类,一旦定义了该属性即可通过java -jar x.jar来运行该jar文件

三、执行jar包
1.jar包中MANIFEST.MF指定了Main-Class和Class-Path:
java -jar rand.jar

2.jar包中MANIFEST.MF未指定某一项或者两者都未指定:
windows
java -cp rand.jar;lib/* rand.Rand
linux
java -cp rand.jar:lib/* rand.Rand

(命令行中入口类不可少,哪怕MANIFEST.MF文件中已指定)

说明
-cp为-classpath的缩写
注意区分三-2中windows下为分号; linux下为冒号:
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值