我写了一个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 OSXstart /min java [arguments]
答案 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 docs和this 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中成功测试了它。