①.、首先基本的运行 jar 包命令如下
这个命令会锁定命令窗口,当窗口关闭时,程序也就自动退出了,所以需要让 jar 包后台运行.
如下,xxx.log 就是指定的输出文件,如果不指定,默认在 jar 包所在目录,创建 nohup.out 文件.
①. 阻塞式方式
java -jar xxx.jar
特点: 当前终端的会话窗口被阻塞, 可按CTRL + C中断程序的运行, 或者直接关闭会话窗口 —— 此时jar程序将终止.
# 通过""符号实现后台运行:
特点: 当前终端的会话窗口不会被阻塞, 但是如果关闭当前窗口, 程序将终止运行.
# 通过"nohup"命令实现后台运行:
nohup java -jar xxx.jar
nohup命令是不挂断运行命令的意思.
特点: 当用户退出或终端关闭时, 程序的运行不受影响.
说明: 用nohup命令运行任务时, 默认情况下这个任务的所有输出都将被重定向到nohup.out文件中, 除非另外指定输出文件. 指定输出文件方式为:
# 将输出重定向到xxx.log文件中:
nohup java -jar xxx.jar xxx.log
符号是重定向符, 实现: 把它之前命令的所有输出信息重定向到后面的文件中, 而不是显示到屏幕上.
JAR包是Java中所特有一种压缩文档,我们可以通过相关命令解压jar包,下面由我为大家整理了linux下解压jar包命令的相关知识,希望大家如果觉得本站发布的文章不错,请转发分享给您身边的朋友,您的支持是我们最大的动力.
第一段:linux解压jar包命令——jar命令详解
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命令
第二段:linux解压jar包命令——jar使用范例
(1)创建jar包
$ jar cf hello.jar hello 利用test目录生成hello.jar包,如hello.jar存在,则覆盖
$ jar cvf hello.jar hello 利用hello目录创建hello.jar包,并显示创建过程
例:E:\jar cvf hello.jar hello
标明清单(manifest)
增加:hello/(读入= 0) (写出= 0)(存储了 0%)
$ jar tvf hello.jar 查看hello.jar包的内容
指定的jar包必须真实存在,否则会发生FileNoutFoundException.
$ jar xvf hello.jar 解压hello.jar至当前目录
$ jar uf hello.jar HelloWorld.java 将HelloWorld.java添加到hello.jar包中
$ jar cvf0 hello.jar *.class 利用当前目录中所有的.class文件生成一个不压缩jar包
$ jar cvfm hello.jar manifest.mf hello
创建的jar包多了一个META-INF目录,META-INF止录下多了一个manifest.mf文件,至于manifest.mf的作用,后面会提到.
$ jar cvfM hello.jar hello 生成的jar包中不包括META-INF目录及manifest.mf文件
$ jar cvfm hello.jar mymanifest.mf -C hello/
表示在切换到hello目录下然后再执行jar命令
(10)-i为jar文件生成索引列表
当一个jar包中的内容很好的时候,你可以给它生成一个索引文件,这样看起来很省事.
$ jar i hello.jar
执行完这条命令后,它会在hello.jar包的META-INF文件夹下生成一个名为INDEX.LIST的索引文件,
它会生成一个列表,最上边为jar包名.
(11)导出解压列表
jar tvf hello.jar hello.txt
如果你想查看解压一个jar的详细过程,而这个jar包又很大,屏幕信息会一闪而过,
这时你可以把列表输出到一个文件中,慢慢欣赏!
例如原目录结构如下:
hello
|---com
|---org
你本想只把com目录和org目录打包,而这时jar命令会连同hello目洋也一块打包进.
这点大家要注意.jar命令生成的压缩文件会包含它后边出的目录.我们应该进入到hello目录再执行jar命令.
注意:manifest.mf这个文件名,用户可以任指定,但jar命令只认识Manifest.mf,它会对用户指定的文件名进行相应在的转换,这不需用户担心.
第三段:linux解压jar包命令——JAR命令使用技巧
(1) jar创建压ZIP文件
jar cvfM TestZIP.jar test 加M参数为了不生成META-INF相关内容
然后将TestZIP.jar改为TestZIP.zip就可以,是不是很简单....
上边我们已经说过了,说JAR文件是一种特殊的压缩文件,所以它当然可以用我们常用的一些解压缩工具来解了,
至于怎么解,这就不用我说了吧.
我们已经说过JAR包与ZIP包主要区别就是JAR包中多一个META-INF的目录,
META-INF目录下有一个manifest.mf文件,我们只要建立好相关的目录一压缩就可以了.
目录的结构如下:
TestJar
|--META-INF
|--manifest.mf
|--相关的类文件
注意:还应该在manifest.mf填写内容,不会写?照着一个已有的抄不就行了
在Linux远程运行JAR包时,是不能关掉窗口程序的,否则程序也会终止.其中nohup
表示后台运行,关闭窗口后也也继续执行,意思是终端连接的时候后台运行,终端断了进程也会停.
具体解决方法是使用nohup命令,在窗口程序的前面加上nohup,程序的后面加上,这样程序就会一直执行直到结束,而不会因为关闭窗口程序而停了.
例子,比如:nohup
php
spider.php
回车,然后提示一堆东西,再次回车,回到shell界面.这就可以了.
还有一个问题:程序在执行中会输出一些信息,如果后台执行的话,这些信息是不是没法看了?(比如:程序执行出错终端,想看看报错信息之类的).使用了nohup命令后,会在当前目录下生成一个nohup.out的日志文件,记录的就是命令的输出.
使用nohup命令,后台运行即可,及时关闭putty、xshell等终端窗口也不会关闭jar程序
例:nohup java -jar xxx.jar
linux下执行jar文件方法:命令行下进入文件目录,执行java -jar file.jar即可,也可在桌面创建一个启动器,在命令栏填写相关的命令:java -jar /file路径/file.jar,这样在桌面双击即可打开该jar文件
创建可执行的 JAR 文件包详解:JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种文档格式.JAR 文件非常类似 ZIP 文件--准确的说,它就是 ZIP 文件,所以叫它文件包.JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的.举个例子,如果我们具有如下目录结构的一些文件:
==
+-- test
+-- Test.class
把它压缩成 ZIP 文件 test.zip,则这个 ZIP 文件的内部目录结构为:
test.zip
如果我们使用 JDK 的 jar 命令把它打成 JAR 文件包 test.jar,则这个 JAR 文件的内部目录结构为:
test.jar
|-- META-INF
| +-- MANIFEST.MF
+--Test.class
创建可执行的 JAR 文件包,需要使用带 cvfm 参数的 jar 命令,同样以上述 test 目录为例,命令如下:jar cvfm test.jar manifest.mf test,这里 test.jar 和 manifest.mf 两个文件,分别是对应的参数 f 和 m,其重头戏在 manifest.mf.因为要创建可执行的 JAR 文件包,光靠指定一个 manifest.mf 文件是不够的,因为 MANIFEST 是 JAR 文件包的特征,可执行的 JAR 文件包和不可执行的 JAR 文件包都包含 MANIFEST.关键在于可执行 JAR 文件包的 MANIFEST,其内容包含了 Main-Class 一项.这在 MANIFEST 中书写格式如下:Main-Class: 可执行主类全名(包含包名)
|-- test
| +-- Test.class
+-- manifest.mf
这时候,需要到 test 目录的上级目录中去使用 jar 命令来创建 JAR 文件包.也就是在目录树中使用==表示的那个目录中,使用如下命令:jar cvfm test.jar manifest.mf test
之后在==目录中创建了 test.jar,test.jar 就是执行的 JAR 文件包.运行时只需要使用 java -jar test.jar 命令即可.