linux下执行jar
文件方法:
命令行下进入文件目录,执行java-jarfile.jar即可,也可在桌面创建一个启动器,在命令栏填写相关的命令:java-jar/file路径/file.jar,这样在桌面双击即可打开该jar文件\x0d\x0a\x0d\x0a创建可执行的JAR文件包详解:JAR文件就是JavaArchiveFile,顾名思意,它的应用是与Java息息相关的,是Java的一种文档格式。JAR文件非常类似ZIP文件--准确的说,它就是ZIP文件,所以叫它文件包。JAR文件与ZIP文件唯一的区别就是在JAR文件的内容中,包含了一个META-INF/MANIFEST.MF文件,这个文件是在生成JAR文件的时候自动创建的.举个例子,如果我们具有如下目录结构的一些文件:\x0d\x0a==\x0d\x0a`--test\x0d\x0a`--Test.class\x0d\x0a把它压缩成ZIP文件test.zip,则这个ZIP文件的内部目录结构为:\x0d\x0atest.zip\x0d\x0a`--test\x0d\x0a`--Test.class\x0d\x0a如果我们使用JDK的jar命令把它打成JAR文件包test.jar,则这个JAR文件的内部目录结构为:\x0d\x0atest.jar\x0d\x0a|--META-INF\x0d\x0a|`--MANIFEST.MF\x0d\x0a`--test\x0d\x0a`--Test.class\x0d\x0a创建可执行的JAR文件包,需要使用带cvfm参数的jar命令,同样以上述test目录为例,命令如下:jarcvfmtest.jarmanifest.mftest,这里test.jar和manifest.mf两个文件,分别是对应的参数f和m,其重头戏在manifest.mf。因为要创建可执行的JAR文件包,光靠指定一个manifest.mf文件是不够的,因为MANIFEST是JAR文件包的特征,可执行的JAR文件包和不可执行的JAR文件包都包含MANIFEST。关键在于可执行JAR文件包的MANIFEST,其内容包含了Main-Class一项。这在MANIFEST中书写格式如下:Main-Class:可执行主类全名(包含包名)\x0d\x0a例如,假设上例中的Test.class是属于test包的,而且是可执行的类(定义了publicstaticvoidmain(String[])方法),那么这个manifest.mf可以编辑如下:Main-Class:test.Test,这个manifest.mf可以放在任何位置,也可以是其它的文件名,只需要有Main-Class:test.Test一行,且该行以一个回车符结束即可。创建了manifest.mf文件之后,我们的目录结构变为:\x0d\x0a==\x0d\x0a|--test\x0d\x0a|`--Test.class\x0d\x0a`--manifest.mf\x0d\x0a这时候,需要到test目录的上级目录中去使用jar命令来创建JAR文件包。也就是在目录树中使用==表示的那个目录中,使用如下命令:jarcvfmtest.jarmanifest.mftest\x0d\x0a之后在==目录中创建了test.jar,test.jar就是执行的JAR文件包。
运行时只需要使用java-jartest.jar命令即可。\x0d\x0a需要注意的是,创建的JAR文件包中需包含完整的、与Java程序包结构对应的目录结构。而Main-Class指定的类,也必须是完整的、包含包路径的类名,如上例的test.Test;而且在没有打成JAR文件包之前可以使用java来运行这个类,即在上例中javatest.Test是可以正确运行的(当然要在CLASSPATH正确的情况下)。1 阻塞式方式
java -jar xxx.jar
特点: 当前终端的会话窗口被阻塞, 可按CTRL + C中断程序的运行, 或者直接关闭会话窗口 —— 此时jar程序将终止.
2 后台运行方式
# 通过"&"符号实现后台运行:
java -jar xxx.jar &
特点: 当前终端的会话窗口不会被阻塞, 但是如果关闭当前窗口, 程序将终止运行.
3 后台持续运行方式
# 通过"nohup"命令实现后台运行:
nohup java -jar xxx.jar &
nohup命令是不挂断运行命令的意思.
特点: 当用户退出或终端关闭时, 程序的运行不受影响.
说明: 用nohup命令运行任务时, 默认情况下这个任务的所有输出都将被重定向到nohup.out文件中, 除非另外指定输出文件. 指定输出文件方式为:
# 将输出重定向到xxx.log文件中:
nohup java -jar xxx.jar >xxx.log &
> 符号是重定向符, 实现: 把它之前命令的所有输出信息重定向到后面的文件中, 而不是显示到屏幕上.
当需要把在Windows上开发的Java程序用在Linux上运行时,就需要吧该Java程序打包成jar包上传到Linux上去运行。首先想到的可能就是通过 java -jar xxx.jar 的方式来运行我们的jar包,程序运行正常,但是窗口被锁定,当我们关闭窗口或Ctrl + C打断程序运行时,程序就会退出,这肯定不是我们想要的,下面我介绍几种Linux下后台启动jar包的方法
优化方法一:
&表示后台运行,ssh窗口不被锁定,但是关闭窗口时,程序还是会退出
优化方法二:
nohup 表示不挂断运行命令行,当账号退出或关闭终端时,程序仍然运行
当用 nohup 命令执行作业时,该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。
优化方法三:
>/usr/local/temp.txt 表示将所有启动的日志信息记录到temp.txt文件中
评论列表(0条)