如何让 Cloud9 和 noVNC 工作以便 JOptionPane 可见?
How do I get Cloud9 and noVNC to work so that JOptionPane is visible?
我有这个问题,最后与 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
六、运行无VNC:
./noVNC/utils/launch.sh --vnc localhost:5900
在尝试使用我的浏览器连接到 noVNC 之前,我不会 运行 遇到问题。好像有3个是这样做的:
这是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 之前的所有步骤都已正确初始化,目前正在 运行ning。我已经阅读了几乎所有关于它的文档。 运行 这个在 Windows 7 和最新的 Chrome.
此致
我还没有完全做到这一点,但我可能比你更接近一小步。你的步骤对我很有帮助。我可以启动 X11 应用程序但不能与它们交互。我只能看到初始屏幕。
您需要修改启动noVNC服务器的行:
./noVNC/utils/launch.sh --vnc localhost:5900 --listen 8080 &
然后您可以从以下 url 从普通浏览器访问 noVNC 网络服务:
https://<workspace>-<user>.c9users.io/vnc.html
当 noVNC 询问连接详细信息时,您可以使用预先填写的主机名 <workspace><-<user>.c9users.io
端口 443
和在前面的步骤中设置的密码进行连接,在您的示例中为 s3cr3t3
。
从 Cloud8 IDE 工作区,您现在可以打开绘制到 VNC 服务器并通过 noVNC 可见的应用程序。例如:
env DISPLAY=:99 xterm
我有这个问题,最后与 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
六、运行无VNC:
./noVNC/utils/launch.sh --vnc localhost:5900
在尝试使用我的浏览器连接到 noVNC 之前,我不会 运行 遇到问题。好像有3个是这样做的:
这是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 之前的所有步骤都已正确初始化,目前正在 运行ning。我已经阅读了几乎所有关于它的文档。 运行 这个在 Windows 7 和最新的 Chrome.
此致
我还没有完全做到这一点,但我可能比你更接近一小步。你的步骤对我很有帮助。我可以启动 X11 应用程序但不能与它们交互。我只能看到初始屏幕。
您需要修改启动noVNC服务器的行:
./noVNC/utils/launch.sh --vnc localhost:5900 --listen 8080 &
然后您可以从以下 url 从普通浏览器访问 noVNC 网络服务:
https://<workspace>-<user>.c9users.io/vnc.html
当 noVNC 询问连接详细信息时,您可以使用预先填写的主机名 <workspace><-<user>.c9users.io
端口 443
和在前面的步骤中设置的密码进行连接,在您的示例中为 s3cr3t3
。
从 Cloud8 IDE 工作区,您现在可以打开绘制到 VNC 服务器并通过 noVNC 可见的应用程序。例如:
env DISPLAY=:99 xterm