web-dev-qa-db-ja.com

CentOS 5CLIでMonoを実行する

Linux CentOS 5 32ビットでvpsサーバー(仮想プライベートサーバー)を実行しています。vncserver X-Windows、GNOME、KDE環境をインストールし、Windows7デスクトップの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
iLinux85

あなたはあなたの質問でこれを明確に述べていませんが、あなたが遭遇しているエラー:

[エラー]:-未処理のSystem.TypeInitializationException:System.Windows.Forms.XplatUIの型初期化子によって例外がスローされました---> System.ArgumentNullException:ディスプレイを開くことができませんでした(X-Serverが必要です。DISPLAY環境変数を確認してください)パラメータ名:表示

次の2つのいずれかを実行しようとしているようです。

  1. xデスクトップにアクセスできないシェルでモノラルアプリを起動します
  2. ディスプレイにアクセスする権限を持たないユーザーとして実行されています

Radegastフォーラム のこのスレッドは同じ問題のように聞こえます。

考えられる解決策

次のいずれかを行う必要があります。

  1. xデスクトップを所有しているのと同じユーザーとしてvpsにSSH接続した後、$ DISPLAY環境変数を「:0.0」に設定します
  2. 実行xhost +他のユーザーとしてmonoコマンドを実行する前にデスクトップを所有するユーザーとして(この他のユーザーにも$ DISPLAY変数を設定することを忘れないでください!)

次のようにmonoコマンドを実行することもできると思います。

% XAUTHORITY=/home/$YOURUSER/.Xauthority DISPLAY=:0.0 mono Radegast.exe

注:$ YOURUSERは、Xデスクトップを所有するユーザーです。

1
slm

C#のコードにGUIがある場合は、それに$ DISPLAYを割り当てる必要があります。リモートLinuxでecho $DISPLAYを使用して最初に$ DISPLAYを指定できます。

  1. [〜#〜] rdp [〜#〜](リモートデスクトッププロトコル)を使用する場合は、xrdpのパッケージをインストールできます。

    $ Sudo apt-get install xrdp
    
  2. リモートサーバーへの接続(Remmina、)。

  3. ターミナルを開き、$ DISPLAYを取得します。

    $echo $DISPLAY
    :10.0
    
  4. sshでmonoプログラムを実行します。

    $ ssh [email protected]
    $ export DISPLAY=:10.0
    $ mono server.exe > /dev/null 2> /dev/null &
    
0
Chu-Saing Lai