2011-05-19 35 views
3

我写了一个shell脚本来运行一组实验,所以我不必手动去做。该脚本运行一个java .jar文件30次,并运行一组这样的30次17次更改其中的几个变量。如何使java可执行文件在后台而不是前台运行?

我调用该程序是这样的:

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

然而,在程序运行时,因为在执行这条线时,Java可执行文件在屏幕的最前沿弹出我不能做并行什么。实质上,当我在其他事情上工作时,它会每1-1.5分钟中断一次。所以我在看几个小时,我实际上不能使用电脑。

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

真诚, 孟加拉白虎

编辑: 基本上我找的Mac OSX相当于Windows的通过的末尾添加&符号

start /min java [arguments] 
+0

什么操作系统? – 2011-05-19 21:38:16

+0

@Marcelo,在我注意到笑脸之前,我几乎要把你指向[meta]上的这个问题](http://meta.stackexchange.com/questions/88046/is-58-accept-rate-bad)!你有我。 ;) – 2011-05-19 21:55:17

+0

欢迎来到Stackoverflow和很好的问题。 – 2011-05-19 21:56:30

回答

1

您可以在UNIX中做到这一点命令行,它推动一个进程到后台

+1

不,这不是他想要的......他很烦,因为(多次)启动的应用程序窃取了他的焦点。 – 2011-05-19 22:02:53

6

使用javaw而不是java(您可能需要确保它的路径)。这将运行它没有任何控制台。

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

+0

thnx Femi,但不是我正在寻找的 我的意思是我希望程序的整个GUI在后台弹出,并且我正在使用的当前程序保持为“当前选定的程序”,if这是有道理的 – WhiteTiger 2011-05-19 22:01:07

+0

哦:你的​​问题没有提到GUI的任何内容,只是可执行文件,我(和其他人)认为它是控制台。坏问题。无论如何:你在使用Swing吗? SWT?一些其他图形工具包? – Femi 2011-05-19 22:05:14

+0

@Femi'javaw'在OSX上不可用 – pillravi 2016-08-31 14:41:57

0

如果你使用Linux(或使用X操作系统)腠可以把一个“假” X服务器的地方通过Xvfb并为JAVA应用程序的DISPLAY变量,以便它使用此disaply。缺点是:您无法访问已启动应用程序的GUI(就我的理解而言,您的情况不是问题)。

在一个外壳:Xvfb :2

在aother壳:DISPLAY=:2 java -jar ...

0

在Windows中,你可以使用:

start /min java [parameters] 

这将启动最小化程序,而不是采取集中了。我在Windows 7 Professional x64中成功测试了它。

+0

好的,这更多的是我正在寻找的方向...... 在MacOSX上执行此操作的命令是什么? – WhiteTiger 2011-05-20 05:48:35

+0

为MacOSx添加未经测试的解决方案 – Marcelo 2011-05-20 13:59:28

+0

这也似乎不工作,因为我得到一个错误说 打开:无效选项 - D 引用选项-Djava.library.path =/Users/borisshabash/Desktop/School/CMPT/894/jViz/Cfiles/DynamicCTGLayout/build/Release 即使我尝试没有该选项,终端仍然失去焦点并被取消选择 – WhiteTiger 2011-05-20 18:52:40

0

在执行封装在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]