2011-05-19 98 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]