我编写了一个在后台运行的java程序。它工作正常,它可以从中等待。
我在Windows中编写了一个bat
文件来运行它。
@echo off
start .\jre7\bin\java.exe -jar ".\my_jar.jar"
exit
当我运行这个.bat
文件时,我可以在任务管理器上看到它并且它正常工作,当它完成时,任务管理器上的java.exe进程关闭/ strong>即可。
它适用于 Windows
但是当我在.sh文件中运行它时,
java程序工作正常,因为它做了我等待它,但在 Sytem Monitor
java 进程没有关闭。我希望它像 Windows 一样自行关闭。
在sh文件中:
export JAVA_HOME="/app/myfolder/java/jre1.7.0_51"
export I_HOME="/app/myfolder/code"
cd $I_HOME
$JAVA_HOME/bin/java -jar my_jar.jar
RStat=$?
有什么问题?
答案 0 :(得分:1)
您也可以使用以下方式终止申请:
System.exit(0);
答案 1 :(得分:1)
它绝对不适合在Windows上优雅地终止而不是在Linux上。 由于您使用的本机库存在差异,您的jar可能只是挂在Linux上,您是否尝试过调用System.exit()?
答案 2 :(得分:0)
您是否已将线程设置为守护程序?
public final void setDaemon(boolean on)
来自JavaDoc:
将此线程标记为守护程序线程或用户线程。当运行的唯一线程都是守护程序线程时,Java虚拟机退出