如何使java可执行文件在后台而不是前台运行?

时间:2011-05-19 21:33:06

标签: java macos executable-jar

我写了一个shell脚本来运行一组实验,所以我不必手动完成。该脚本运行一个java .jar文件30次,并运行一组30次17次,改变其间的一些变量。

我调用这样的程序:

java -Djava.library.path=/Users/me/Desktop/Cfiles/DynamicCTGLayout/build/Release  -jar [name of .jar file]

但是,在程序运行时我无法并行执行任何操作,因为执行此行时,java可执行文件会弹出屏幕的最前端。从本质上讲,当我处理其他事情时,每隔1-1.5分钟就会中断。所以我看了几个小时我实际上无法使用电脑。

有没有办法调用可执行文件,以便它不会在所有其他程序之上弹出?

此致 孟加拉白虎

编辑: 基本上我正在寻找与Windows'

相当的Mac OSX
start /min java [arguments]

5 个答案:

答案 0 :(得分:6)

使用javaw代替java(您可能需要确保其在路径上)。这将在没有任何控制台的情况下运行它。

javaw -Djava.library.path=/Users/me/Desktop/Cfiles/DynamicCTGLayout/build/Release -jar [name of .jar file]

答案 1 :(得分:1)

您可以在unix中通过在命令行末尾添加&符号来执行此操作,它会将进程推送到后台

答案 2 :(得分:1)

执行封装在JAR中的程序时遇到了同样的问题。我通过在命令行调用中添加选项-Djava.awt.headless=true来修复它(请参阅oracle docsthis question)。所以,你会运行:

java -Djava.awt.headless=true -Djava.library.path=/Users/me/Desktop/Cfiles/DynamicCTGLayout/build/Release -jar [name of .jar file]

答案 3 :(得分:0)

如果你使用Linux(或使用X的操作系统),cou可以使用Xvfb放置一个“假的”X服务器,并为JAVA应用程序设置DISPLAY变量,以便它使用这个消失。缺点:您无法访问已启动应用程序的GUI(根据我的理解,这不是您的问题)。

在一个shell上:Xvfb :2

另一个shell:DISPLAY=:2 java -jar ...

答案 4 :(得分:0)

在Windows中,您可以使用:

start /min java [parameters]

这将使程序最小化并且不会将焦点移开。我在Windows 7 Professional x64中成功测试了它。