Init.d에서 Java JAR Swing 실행 파일을 실행하도록 DISPLAY를 설정하는 방법

Init.d에서 Java JAR Swing 실행 파일을 실행하도록 DISPLAY를 설정하는 방법

ARM 장치 내부의 Raspbian Wheezy Debian 배포판에서 부팅 시 Java JAR Swing GUI 실행 파일을 실행해야 합니다.

나는 팔로우하고 있다이것참고로 myapp, myapp-start.shmyapp-stop.sh, 및이것가능한 솔루션(및 기타 유사한 솔루션). 그러나 DISPLAY 변수에 대한 참조는 없습니다.

많은 대안을 확인해 보았지만,

옵션을 시도했지만 적용할 수 없음:

  • /usr/bin/java -jar -Djava.awt.headless=true $myapp.jar
  • unset DISPLAY(문장 내부 myapp-start.sh, 위 java -jar)

실수:

  • java.awt.HeadlessException: No X11 DISPLAY variable was set, but this program performed an operation which requires it.

시도한 옵션myapp-start.sh( 위 의 문장 내부 java -jar):

  • export DISPLAY=:0
  • export DISPLAY=:0.0
  • export DISPLAY=localhost:0.0

실수:

  • Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable...
  • Client is not authorized to connect to ServerException in thread stack...

시도하지 않은 옵션

  • ssh - X localhostssh: 서버를 어떻게 운영해야 하나요 X11? 진행 중인 작업은 어디서 해야 합니까 init.d? 이것은 GUI를 사용하여 Java 프로그램을 실행하기 위한 표준 솔루션입니까?
  • USER=rootinside myapp-start.sh: init.d멈추고 비밀번호를 물어보세요. 너무 똑똑해서 프로세스가 시작되지 않습니다.
  • 위의 옵션 중 하나라도 myapp-start.sh코드 외부에 포함되어야 합니까? 어디?

해서는 안 된다더 간단하다시작 시 코드 조각을 실행하시겠습니까?

다른 옵션을 선택하시면 매우 감사하겠습니다.

2015-04-12 수정

새로운 옵션

다음 옵션에서는 기본 사용자가 로그인하고 X11이 시작된 /etc/xdg/lxsession/LXDE-pi/autostart후에 실행될 코드 조각을 여기에 추가합니다 (참조:pi엘리야 그레이제안):

  • usr/bin/java -jar /home/pi/Embedded/bin/PowerBar.jar(앰퍼샌드 없음)
  • export DISPLAY=:0.0 usr/bin/java -jar /home/pi/Embedded/bin/PowerBar.jar(앰퍼샌드 없음)
  • /bin/bash /home/pi/Embedded/bin/powerbarstart.sh(앰퍼샌드 없음)

둘 다 백그라운드에서 애플리케이션을 시작합니다. 즉, 배경 음악을 재생하고 VNC를 통해서만 그래픽에 액세스합니다 :0( 를 사용하여 TightVNC). 부작용으로 화면 보호기가 활성화되고 응용 프로그램이 약 60초마다 정지됩니다. 동일한 위치를 사용하여 화면 보호기를 비활성화할 수도 있습니다.

제가 포함하지 않은 누락된 옵션이나 기호가 있습니까?

해결책 장치가 :1.0그렇지 않도록 구성되었습니다 :0.0. 이를 변경하면 myapp-start.sh문제가 해결되었습니다.

답변1

응용 프로그램이 대화형이 아닌 경우 가상 X11 서버를 시작하고 사용할 응용 프로그램에 대한 DISPLAY 변수를 설정할 수 있습니다.

이 방식으로 사용할 수 있는 X11 서버는 다음과 같습니다.

후자를 사용하면 나중에 연결하여 VNC 클라이언트(vncviewer)를 사용하여 화면을 보고 상호 작용할 수 있습니다.

Raspberry pi(또는 유사한 장치)가 pi그래픽 환경에서 사용자를 자동으로 로그인하도록 구성된 경우 사용자로 애플리케이션을 시작 pi하고 :0디스플레이를 사용할 수 있습니다. 이 작업을 수행하기 전에 X11이 부팅을 완료했는지 확인해야 합니다.

pi편집: 구성이 Xvnc 서버를 user 먼저 시작한 다음 프레임 버퍼 기본 X 서버를 user 로 시작하는 것 같습니다 root. 이 경우 발견한 대로 애플리케이션을 실행 root하고 해당 디스플레이로 사용해야 합니다.:1

또는 실제로 원하는 것이 부팅 시 한 번이 아니라 사용자(일반적으로 pi)가 그래픽 환경에서 로그인할 때마다 애플리케이션을 시작하는 것이라면 해당 그래픽 환경에 적합한 rc 파일에 이를 추가하세요. 예를 들어 /etc/xdg/lxsession/LXDE-pi/autostart.

관련 정보