我创建了一个在 Windows 中运行的 Java GUI 应用程序。现在我希望它在不支持 GUI 的无头 Linux 实例上运行。我想将 GUI 转换为 TUI。有没有办法可以替换一些类并通过 TUI 在 Linux 中运行。请帮忙。
4 回答
您可以使用 PeterMmm 的建议http://www.pitman.co.za/projects/charva/index.html
或者,您可以通过运行 X 服务器在本地计算机上运行 GUI,然后使用ssh -X
. 这将在您的本地机器上显示 GUI,但程序实际上是在 linux 机器上运行的。
或者,您可以运行 XVFB 在 Linux 机器上伪造一个 GUI。您将无法看到 GUI 或以任何方式与其交互,但这对您来说可能无关紧要。
为了传播一个简单有效的解决方案,我复制了@fossfreedom在 SA "Ask Ubuntu" 上提供的答案:
sudo apt-get install xvfb
然后:
xvfb :1 -screen 0 800x600x8 &
export DISPLAY=":1"
java application_name.jar
或者
xvfb-run -a -e /tmp/some/log/file.log java -jar /home/user/somejava.jar
有一些适用于 Java 的 ncurses 实现,例如:http ://www.pitman.co.za/projects/charva/index.html
如果您从另一台运行 X 的 Linux 机器连接到您的用户 ssh config ( ~/.ssh/config
):
Compression yes
CompressionLevel 9
ForwardX11 yes
ForwardX11Trusted yes
然后,当您登录到远程 Linux 机器时,您的 GUI 将被转发到本地屏幕。请注意,它可能很慢……特别是一些 AWT 应用程序即使在 LAN 上也很慢。
如果在 Windows 上,请安装CygWin及其 Xserver 组件。也OpenSSH
可以有所帮助。当您要通过 CygWin 进行连接时ssh
,请使用与上述相同的配置。当然,在连接到远程机器之前运行 Xserver。您也可以使用 Putty 连接到远程,但不要忘记在会话配置中启用 X11 转发和压缩。
远程机器必须已xauth
安装 +sshd
必须已X11Forwarding
启用。如果确定echo $DISPLAY
将显示localhost:10
。