应用程序完成后为什么java进程没有关闭?

时间:2014-03-27 13:58:16

标签: java linux windows cmd sh

我编写了一个在后台运行的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=$? 

有什么问题?

3 个答案:

答案 0 :(得分:1)

您也可以使用以下方式终止申请:

System.exit(0);

答案 1 :(得分:1)

它绝对不适合在Windows上优雅地终止而不是在Linux上。 由于您使用的本机库存在差异,您的jar可能只是挂在Linux上,您是否尝试过调用System.exit()?

答案 2 :(得分:0)

您是否已将线程设置为守护程序?

public final void setDaemon(boolean on)

来自JavaDoc:

  

将此线程标记为守护程序线程或用户线程。当运行的唯一线程都是守护程序线程时,Java虚拟机退出