我有一个使用AWT的Java程序,我想在无头系统上运行。程序的显示除了显示统计数据外什么都不做。程序结束后退出。显示屏上没有用户交互。该程序创建了一个我在构建系统中使用的输出文件。
有没有办法在没有配置X11显示器的情况下运行Java程序?我可以强制Java运行程序而不尝试显示任何内容吗?我无法访问源代码(它只是.jar文件),因此我无法修改源代码。
有关如何让它发挥作用的任何想法?
答案 0 :(得分:30)
这里的基本问题是如何在没有X服务器的情况下运行Java应用程序;提供“假”X服务器只是一种选择。在Java 1.4及更高版本中,您可以执行以下操作:
java -Djava.awt.headless=true
即使没有X服务器,这也允许使用AWT的应用程序在无头系统上运行。
答案 1 :(得分:16)
Xvfb可以满足您的要求。我自己没有使用它,但这里有维基百科的链接:http://en.wikipedia.org/wiki/Xvfb
答案 2 :(得分:14)
您可以使用vncserver。
vncserver :1001
export DISPLAY=localhost:1001
java..
增加的优点是你可以实际查看gui 使用vncserver'以防万一'
答案 3 :(得分:5)
还可以以低分辨率和颜色深度运行Xvnc。
答案 4 :(得分:1)
正如Charles Duffy所提到的,传统的方法是告诉Java无头。
请注意,您始终可以在Eclipse中安装jar并使用jad + jadclipse查看它实际执行的操作,如果需要在类路径中将另一个类文件放在其“前面”,甚至可以覆盖一个类
如果程序使用Java2D可能相关的工具是较新的Java版本使用X11服务器中的优化来更快地渲染。仅此一点可能是将连接到高性能图形卡的X11服务器用于图形处理的原因。
答案 5 :(得分:0)
我在过去的PJA库中使用得非常成功,它们似乎不再被维护,但是再一次,只是想要运行......
答案 6 :(得分:0)
我能够使用命令行参数
在OpenJFX中获得无头模式-Dglass.platform=Monocle -Dmonocle.platform=Headless -Dprism.order=sw