厳密なVNC接続を使用してRaspberry Pi 2ヘッドレス接続を使用するRaspbianで、単純なJava Swingプログラムを実行することはできません。

厳密なVNC接続を使用してRaspberry Pi 2ヘッドレス接続を使用するRaspbianで、単純なJava Swingプログラムを実行することはできません。

私はRaspberry Pi 2モデルを使用しており、オペレーティングシステムはDebianです。私はJFrameを開いて単純なJavaスイングプログラムを試しましたが、うまくいきました。

後で私はPiヘッドレス、つまりモニター、キーボード、マウスを接続せずに使用したいと思いました。だから私はイーサネットポートを使って接続しました。 PiにコンパクトなVNCサーバーがインストールされ、デスクトップコンピュータにVNCビューアクライアントがあります。

私のPCでPiのデスクトップを見て操作することができますが、同じJavaスイングプログラムを実行しようとすると、Java Headless例外が発生し、時には認証エラーが発生したときに終了します。オンラインで検索した後、いくつかのエクスポートコマンドを試しましたが、DISPLAY何の役にも立ちませんでした。

一部のJREまたはオペレーティングシステム固有のパラメータを設定する必要があることを知っています。

以下はスタックです

pi@raspberrypi:~/prog $ sudo java HelloSwing

クライアントに 'main' スレッドの ServerException に接続する権限がありません。 java.awt.AWTError:DISPLAY変数の値として「:1.0」を使用してX11 Windowsサーバーに接続できません。

sun.awt.X11GraphicsEnvironment.initDisplay(ネイティブメソッド)

sun.awt.X11GraphicsEnvironment.access(X11GraphicsEnvironment.java:65)で200ドル

sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:115)

java.security.AccessController.doPrivileged(ネイティブメソッド)

sun.awt.X11GraphicsEnvironmentにあります。 (X11GraphicsEnvironment.java:74)

java.lang.Class.forName0(ネイティブメソッド)

java.lang.Class.forName(Class.java:259)から

java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:102)から

java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:81)から

java.awt.Window.initGC(Window.java:475)から

java.awt.Window.init(Window.java:495)から

java.awt.Windowから。 (Window.java:537)

java.awt.Frame.(Frame.java:420)から

javax.swing.JFrameから。 (JFrame.java:225)

HelloSwing.main(HelloSwing.java:6)から

関連情報