我遇到了之前的问题,最后与C9支持小组进行了交谈,这有助于我取得一些进展。重申一下,问题是使用JOptionPane运行一个简单的Java程序:

import javax.swing.JOptionPane;

public class Test
{
  public static void main ( String args[] )
  {
    JOptionPane.showMessageDialog (null, "This is a sample program" );
  }
}


导致这些错误:

Exception in thread "main" java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
  at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
  at java.awt.Window.<init>(Window.java:535)
  at java.awt.Frame.<init>(Frame.java:420)
  at java.awt.Frame.<init>(Frame.java:385)
  at javax.swing.SwingUtilities$SharedOwnerFrame.<init>(SwingUtilities.java:1756)
  at javax.swing.SwingUtilities.getSharedOwnerFrame(SwingUtilities.java:1831)
  at javax.swing.JOptionPane.getRootFrame(JOptionPane.java:1697)
  at javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:863)
  at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:667)
  at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:638)
  at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:609)
  at Test.main(Test.java:8)


显然没有GPU或监视器,因此需要对其进行仿真。我得到了以下步骤:

一,设置参数:

sudo apt-get install xvfb x11-xkb-utils xfonts-100dpi xfonts-75dpi xfonts-scalable x11-apps


其次,使显示可用并给其编号99:

Xvfb :99 -ac -screen 0 1280x1024x16 &


第三,创建一个x11vnc密码:

x11vnc -storepasswd s3cr3t3 ~/.vnc/passwd


第四,启动VNC服务器。

sudo x11vnc -rfbauth ~/.vnc/passwd -xkb -noxrecord -noxfixes -noxdamage -ncache 10 -rfbport 5900 -display :99 &


第五,这导致它在端口5900上侦听,但只有8080可用,因此不需要VNC:

git clone git://github.com/kanaka/noVNC


第六,运行noVNC:

./noVNC/utils/launch.sh --vnc localhost:5900


在尝试使用浏览器连接到noVNC之前,我不会遇到任何问题。似乎有三个是这样做的:

这是由C9支持人员给我的:

https://<workspace>-<username>.c9.io/vnc.html


这是noVNC生成的,用于将浏览器指向:

http://<username>-<workspace>-1260462:6080/vnc.html?host=<username>-<workspace>-1260462&port=6080


然后还有这个网站,可以在其中指定主机,端口,密码等。

http://kanaka.github.io/noVNC/noVNC/vnc.html


无论如何,我永远都无法连接,也不确定自己在做什么错。我已验证启动noVNC的所有步骤均已正确初始化,并且当前正在运行。我已经阅读了几乎所有的文档。使用最新的Chrome在Windows 7上运行。

问候

最佳答案

我还没有完全解决这个问题,但是我可能比您更近一步。您的步骤对我真的很有帮助。我可以启动X11应用程序,但不能与它们交互。我只能看到初始屏幕。

您需要修改启动noVNC服务器的行:

./noVNC/utils/launch.sh --vnc localhost:5900 --listen 8080 &

然后,您可以从常规浏览器访问以下URL上的noVNC Web服务:

https://<workspace>-<user>.c9users.io/vnc.html

当noVNC询问连接详细信息时,您可以使用预先填写的主机名<workspace><-<user>.c9users.io端口443和在先前步骤中设置的密码连接,在本例中为s3cr3t3

现在,您可以从Cloud8 IDE工作区中打开吸引到VNC服务器并通过noVNC可见的应用程序。例如:

env DISPLAY=:99 xterm

参考:https://docs.c9.io/v1.0/docs/multiple-ports

关于java - 如何使Cloud9和noVNC正常工作,以便可见JOptionPane?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28309973/

10-09 21:18