시작 시 X 서버에 어떻게 액세스합니까?

시작 시 X 서버에 어떻게 액세스합니까?

저는 Linux에서 Java Swing 애플리케이션을 실행하고 있습니다. Java 코드를 서비스로 래핑했습니다.

아무 문제 없이 명령 프롬프트에서 my_java_service를 시작할 수 있습니다.

부팅 시 애플리케이션이 시작되기를 원합니다. 그래서 명령을 사용하여 my_java_service를 /etc/rc5.d 폴더에 복사했습니다 update-rc.d.

X 서버의 시작 순서는 START20(S20)입니다.

그래서 my_java_service에 START55(S55)의 시작 명령을 내렸습니다.

내가 얻는 오류는 다음과 같습니다.

Exception in thread "main" java.awt.AWTError: Can't connect to X11 window server using '0.0' as the value of the DISPLAY variable.

my_java_service가 시작 시 X 서버에 연결할 수 없다고 생각합니다.

my_java_service를 사용하고 있지만 xhost +local:all아무 작업도 수행하지 않습니다.

X 서버에 액세스하고 부팅 시 애플리케이션을 시작하려면 어떻게 해야 합니까?

답변1

이 기능이 작동하도록 하려면 앱 창이 로그인 화면에 팝업으로 표시되고 지나가는 모든 사람이 액세스할 수 있습니다. 정말 원하는가요?

로그인 화면에서 시작된 모든 창은 누군가 로그인할 때 강제로 종료되므로 애플리케이션은 사용자 로그인을 감지하고 어떻게든 해당 사용자 세션에 대한 연결을 다시 설정해야 합니다. 누군가 GUI를 사용하여 로그아웃하면 X 서버 재설정이 트리거되어 모든 X 응용 프로그램이 서버에서 연결 해제됩니다. 이를 위해서는 복잡한 재연결 논리가 필요하거나 서비스가 실행되는 동안 로컬 GUI를 사용해서는 안 된다는 점을 인정해야 합니다.

실제로 필요한 것이 GUI 콘솔에서 사용자 로그인/로그아웃과 별도로 Java 서비스를 실행하는 것이라면 더 나은 솔루션은 응용 프로그램에 대해 별도의 X 서버를 설정하는 것입니다.

가끔 애플리케이션과 상호 작용해야 하는 경우 독립형 VNC X 서버가 적합할 수 있습니다. 자체 가상 디스플레이가 있으며 필요한 경우 VNC 클라이언트를 사용하여 연결할 수 있습니다.

로컬 GUI를 사용하여 애플리케이션과 전혀 상호 작용할 필요가 없다면 다음을 사용할 수 있습니다.가상 프레임버퍼X 서버, 실제로는 전혀 표시되지 않지만 그 외에는 실제 X 서버처럼 작동합니다. Linux 배포판에서 이와 xvfb유사한 패키지를 찾을 수 있습니다.

관련 정보