开发者

How to make a java executable run in the background instead of the foreground?

I wrote a shell script to run a set of experiments so I won't have to do it manually. The script runs a java .jar file 30 times, and runs a set of those 30 times 17 times changing a few variables in between.

I invoke the program like this:

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

However, I can't do anything in parallel while the program runs because when this line is executed, the java executable pops out at the forefront of the screen. In essence when I work on something else it gets interrupted every 1-1.5 minutes. so I'm looking at a few hours I can't actually use the computer.

Is there a way to invoke an executa开发者_运维百科ble so that it doesn't pop out on top of all the other programs?

Sincerely, WhiteTiger

Edit: Basically I'm looking for the Mac OSX equivalent to Windows'

start /min java [arguments]


Use javaw instead of java (you might need to make sure its on the path). This will run it without any console.

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


I had the same problem when executing a program encapsulated in a JAR. I fixed it by adding the option -Djava.awt.headless=true to my command line invocation (see oracle docs and this question). So, you would run:

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


You can do this in unix by adding & symbol at the end of the command line, it pushes a process to background


If you use Linux (or an OS that uses X) cou could put a "fake" X server in place using Xvfb and set the DISPLAY variable for the JAVA app so that it uses this disaply. The downside: You can't access the GUI of the launched application (which is, to my understanding, not a problem in your case).

On one shell: Xvfb :2

On aother shell: DISPLAY=:2 java -jar ...


In Windows you can use:

start /min java [parameters]

This will start the program minimized and not take focus away. I tested it successfully in Windows 7 Professional x64.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜