ARM 장치 내부의 Raspbian Wheezy Debian 배포판에서 부팅 시 Java JAR Swing GUI 실행 파일을 실행해야 합니다.
나는 팔로우하고 있다이것참고로 myapp
, myapp-start.sh
및 myapp-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 localhost
ssh
: 서버를 어떻게 운영해야 하나요X11
? 진행 중인 작업은 어디서 해야 합니까init.d
? 이것은 GUI를 사용하여 Java 프로그램을 실행하기 위한 표준 솔루션입니까?USER=root
insidemyapp-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
.