jar
1. jar文件
jar文件(java归档 javaARchive)是一种软件包文件格式,它是java所特有的一种压缩文档,可以简单理解成.zip文件;通常用于聚合大量的java类文件、元数据和资源文件到一个文件,以便于java平台应用软件或库;jar文件是以zip格式进行构建的,用户可以使用JDK自带的jar命令来创建或提前jar文件;jar包中包含的是.class文件,jvm在加载jar包中的类的时候,会自动解压这个jar文件,然后将引用的类加载到虚拟机中.
2.jdk环境变量中的jar
dt.jar: 在{JAVA_HOME}/lib目录下,是java运行环境相关的类库,主要是swing的包
tools.jar:{JAVA_HOME}/lib目录下,是java的工具类库,编译(javac)和运行(java)都需要用到其中的类
rt.jar: 在 jre/lib目录下,是java的基础类库,例如String等基础类就在rt.jar中,它默认就在root classload的加载路径里面,因此不需要在配置classpath时配置它的路径
3. 配置jdk环境变量的作用
- PATH: 作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序,我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,这样我们就能在任意目录下执行java/javac命令
- CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,jvm中的类加载器就是通过CLASSPTH来寻找类的。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。
- JAVA_HOME环境变量。它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。
3. jar命令的使用(uinux终端使用jar命令)
jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名...
其中{ctxu}这四个参数必须选选其一。[v f m e 0 M i ]是可选参数,文件名也是必须的。
-c 创建一个jar包
-t 显示jar中的内容列表
-x 解压jar包
-u 添加文件到jar包中
-f 指定jar包的文件名
-v 生成详细的报造,并输出至标准设备
-m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些一设置)
-0 产生jar包时不对其中的内容进行压缩处理
-M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置
-i 为指定的jar文件创建索引文件
-C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令
复制代码
1 使用vim 编写java类 HelloJar.java
2 编译:javac -d . HelloJar.java 得到HelloJar.class文件
3 使用vim 创建MANIFEST.MF文件,jar文件中指定了一个META-INF目录来存放MANIFEST.MF文件,它包含了jar文件的内容描述,并在运行时向jvm提供程序的信。它的主要属性有
main-class : 程序入口类,jar包的启动类
class-path : 依赖的其它jar包
复制代码
4 在创建的MANIFEST.MF文件中添加: main-class : HelloJar
5 配置jar包中的MANIFEST.MF文件:
命令:jar cvmf MANIFEST.MF HelloJar.jar HelloJar.class
复制代码
6 运行jar文件: java - jar HelloJar.jar 即可输出启动类的内容。
7 补充:如果有引用其它jar包,需要在MANIFEST.MF的class-path属性中配置
4. web项目jar形式运行
- 将项目的jar包上传到linux服务器上
- 运行jar文件并让其不间断地运行
nohup java -jar [projectName.jar]
复制代码
- 上述命令会将输出追加到一个当前目录下的nohup.out文件中,此文件中存放的是tomcat的启动日志
war包
war是一个可以直接运行的web模块,通常用于网站,打成包部署到容器中。以Tomcat来说,将war包放置在其\webapps\目录下,然后启动Tomcat,这个包就会自动解压,就相当于发布了。
参考博文: