2017-08-29 354 views
0

我想用我的NetBeans IDE中運行下面的示例代碼:

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <dbus/dbus.h> 

int main() { 
    DBusConnection *connection = NULL; 
    DBusError error; 
    char buffer[1024]; 

    dbus_error_init(&error); 
    connection = dbus_bus_get(DBUS_BUS_SESSION, &error); 
    if (dbus_error_is_set(&error)) { 
     fprintf(stderr, "%s", error.message); 
     abort(); 
    } 

    puts("This is my unique name"); 
    puts(dbus_bus_get_unique_name(connection)); 
    fgets(buffer, sizeof(buffer), stdin); 

    return 0; 
} 

從優秀教程: DBUS TUTORIAL USING THE LOW-LEVEL API

我有我無頭丕設置了SSH,並已安裝的所有dbus開發所必需的庫。

然而,在NetBeans中運行該程序時,我收到以下錯誤

無法的AutoLaunch一個DBUS守護進程沒有$顯示X11

在/ usr/bin中/ dbus-launch會異常與終止以下錯誤:Autolaunch錯誤:X11初始化失敗。

注意,我在我的遠程主機屬性啓用的NetBeans

X11轉發我可以看到,如果我SSH到郫縣自己和 回聲$ DISPLAY 這個沒有返回,是空的。

到目前爲止,我曾嘗試:

in /etc/ssh/sshd_config 
X11Forwarding yes 
X11DisplayOffset 10 
X11UseLocalhost no 
AllowTcpForwarding yes 

沒有工作。

試運行環境變量設置爲

DISPLAY export DISPLAY=$HOSTNAME:0.0 

0x212d0 "org.freedesktop.DBus.Error.Spawn.ExecFailed" 
0x21fe8 "/usr/bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed.\\n" 

沒有工作。

試圖

In /etc/ssh/ssh_config 
ForwardX11 yes 

沒有工作。

這是一個讓我的Pi設置爲X11或配置我的netbeans環境來運行具有特定參數的程序的情況嗎?

非常感謝您的任何建議。

更新2017年8月30日:

我做了一個新的安裝debian的,隨後吉爾的回答:

https://unix.stackexchange.com/questions/12755/how-to-forward-x-over-ssh-to-run-graphics-applications-remotely ...

我可以確認:在 /etc/ssh/sshd_config X11Forwarding yes X11DisplayOffset 10。 ..

xauth安裝在遠程Pi上。

我在我的客戶端mac上安裝了XQuartz。當ssh -X pi @ IP地址,xquartz打開,並且如果我在遙控Pi上獲得localhost:12.0 ...數字隨每個終端而改變。

目前,如果錯誤地設置項目環境在NetBeans:

DISPLAY =本地主機:11.0(這是錯誤的,因爲數量與每個ssh連接到遠程丕變)。

因此,當我嘗試運行該程序時,NetBeans將掛起,我也無法調試。

我在這個階段的問題是,我如何正確地爲NetBeans設置DISPLAY環境,以便每次它與遠程Pi進行SSH連接並請求X11轉發時,它將具有正確的$ DISPLAY?

回答

0

自動啓動dbus守護進程只在X11會話下才有效。否則它會被禁用,因爲沒有辦法讓不同的應用程序建立一個dbus守護進程的公共實例。

如果你想運行在你的PI盒獨立X11的DBUS守護進程,你應該將其配置爲啓動時啓動的DBUS守護進程,並在 DBUS_SESSION_BUS_ADDRESS環境變量導出總線地址。

欲瞭解更多信息請參閱https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690530

如果你想用你的遠程X會話另一方面,你需要在你ssh到郫縣解決您的錯誤配置的X11轉發,使得顯示環境變量的設置是否正確。參見例如https://unix.stackexchange.com/questions/12755/how-to-forward-x-over-ssh-to-run-graphics-applications-remotely

+0

感謝您的回覆。我已經在你提供的鏈接中跟隨吉爾斯的回答。並在客戶端mac上安裝了XQuartz。請參閱我主要問題中的更新。我如何在NetBeans項目中正確設置$ DISPLAY環境,以便每次netbeans與遠程Pi建立SSH連接時,它都能正確設置DISPLAY?非常感謝。 –

+0

@Dan_R如果您有新問題,請提出新問題。 –

+0

道歉,你是對的......我在這裏提出了一個新的問題:[link](https://stackoverflow.com/q/46043094/1315288) –

0

解決這個如下:

https://unix.stackexchange.com/a/12772

此外,確保XQuartz(X11客戶端)在客戶端計算機(在此情況下的MacOS)上運行。

我將確認這是否適用於在無頭配置下運行的Pi(服務器)。

相關問題