Linux CentOS 5 32ビットで実行されているvpsサーバー(仮想プライベートサーバー)があり、vncserver
X-Windows、GNOME、およびKDE環境をインストールし、Windows 7デスクトップのvncviewerからVNCサーバーに接続しました。
ここでコマンドを実行します。
mono Radegast.exe
ターミナルで私
[ERROR]: - Unhandled System.TypeInitializationException: An exception was thrown by the type initializer for System.Windows.Forms.XplatUI ---> System.ArgumentNullException: Could not open display (X-Server required. Check you DISPLAY environment variable)
Parameter name: Display
at System.Windows.Forms.XplatUIX11.SetDisplay (IntPtr display_handle) [0x00000]
at System.Windows.Forms.XplatUIX11..ctor () [0x00000]
at System.Windows.Forms.XplatUIX11.GetInstance () [0x00000]
at System.Windows.Forms.XplatUI..cctor () [0x00000]
--- End of inner exception stack trace ---
at System.Windows.Forms.Application.EnableVisualStyles () [0x00000]
at Radegast.MainProgram.RunRadegast (System.String[] args) [0x00000]
at Radegast.MainProgram.Main (System.String[] args) [0x00000] : An exception was thrown by the type initializer for System.Windows.Forms.XplatUI
at System.Windows.Forms.Application.EnableVisualStyles () [0x00000]
at Radegast.MainProgram.RunRadegast (System.String[] args) [0x00000]
at Radegast.MainProgram.Main (System.String[] args) [0x00000]
モノ版は
# mono -V
Mono JIT compiler version 2.4.2.3 (tarball Sat Apr 20 19:49:33 MSD 2013)
Copyright (C) 2002-2008 Novell, Inc and Contributors. www.mono-project.com
TLS: __thread
GC: Included Boehm (with typed GC)
SIGSEGV: altstack
Notifications: epoll
Architecture: x86
Disabled: none
答え1
あなたの質問にこれを明示的に言及していませんが、発生するエラーは次のとおりです。
[エラー]: - 未処理の System.TypeInitializationException: System.Windows.Forms.XplatUI の型イニシャライザで例外が発生しました。 ---> System.ArgumentNullException:ディスプレイを開くことができません(X-Serverが必要です。DISPLAY環境変数を確認してください)パラメータ名:ディスプレイ
次の2つのうちの1つを実行したいようです。
- Xデスクトップにアクセスせずにシェルでモノラルアプリケーションを起動する
- ディスプレイにアクセスできないユーザーとして実行
この手がかりはレッドガストフォーラム同じ問題があるようです。
潜在的なソリューション
あなたが必要とする:
- Xデスクトップを所有しているのと同じユーザーとしてvpsにsshを接続し、$ DISPLAY環境変数を「:0.0」に設定します。
xhost +
他のユーザーとしてmonoコマンドを実行する前に、デスクトップを所有しているユーザーとして実行してください。 (他のユーザーにも$ DISPLAY変数を設定することを忘れないでください!)
次のようにモノラルコマンドを実行することもできると思います。
% XAUTHORITY=/home/$YOURUSER/.Xauthority DISPLAY=:0.0 mono Radegast.exe
メモ:$YOURUSERはXデスクトップを所有しているユーザーです。
答え2
C#コードにGUIがある場合は、$ DISPLAYを割り当てる必要があります。echo $DISPLAY
リモートLinuxで$ DISPLAYを入力して起動できます。
使いたいならリモート開発計画(リモートデスクトッププロトコル)パッケージをインストールできます。XRDP。
$ sudo apt-get install xrdp
リモートサーバー(Remmina,)に接続します。
端末を開き、$ DISPLAYを受け取ります。
$echo $DISPLAY :10.0
SSHを使用してモノラルプログラムを実行します。
$ ssh [email protected] $ export DISPLAY=:10.0 $ mono server.exe > /dev/null 2> /dev/null &