java를 사용하여 localhost의 포트 10.0에 X11을 표시하기 위해 연결하는 스크립트가 있습니다.
하지만 항상이 오류가 발생합니다
java.lang.InternalError: Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:62)
at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:178)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:142)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:112)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at java.awt.Toolkit$2.run(Toolkit.java:849)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:841)
at ij.io.Opener.openJpegOrGif(Opener.java:367)
at ij.io.Opener.openImage(Opener.java:220)
at ij.io.Opener.openImage(Opener.java:249)
at ij.io.Opener.open(Opener.java:116)
at ij.IJ.open(IJ.java:1112)
at ij.macro.Functions.open(Functions.java:2006)
at ij.macro.Functions.doFunction(Functions.java:129)
at ij.macro.Interpreter.doStatement(Interpreter.java:205)
at ij.macro.Interpreter.doBlock(Interpreter.java:515)
at ij.macro.Interpreter.runUserFunction(Interpreter.java:278)
at ij.macro.Interpreter.getFactor(Interpreter.java:1200)
at ij.macro.Interpreter.getTerm(Interpreter.java:1162)
at ij.macro.Interpreter.getExpression(Interpreter.java:1145)
at ij.macro.Interpreter.getBooleanExpression(Interpreter.java:881)
at ij.macro.Interpreter.getLogicalExpression(Interpreter.java:857)
at ij.macro.Interpreter.getBoolean(Interpreter.java:850)
at ij.macro.Interpreter.doIf(Interpreter.java:829)
at ij.macro.Interpreter.doStatement(Interpreter.java:217)
at ij.macro.Interpreter.doBlock(Interpreter.java:515)
at ij.macro.Interpreter.doStatement(Interpreter.java:241)
at ij.macro.Interpreter.doIf(Interpreter.java:831)
at ij.macro.Interpreter.doStatement(Interpreter.java:217)
at ij.macro.Interpreter.doStatements(Interpreter.java:195)
at ij.macro.Interpreter.run(Interpreter.java:99)
at ij.macro.Interpreter.run(Interpreter.java:65)
at ij.macro.Interpreter.run(Interpreter.java:75)
at ij.plugin.Macro_Runner.runMacro(Macro_Runner.java:127)
at ij.plugin.Macro_Runner.runMacroFile(Macro_Runner.java:112)
at ij.IJ.runMacroFile(IJ.java:103)
at ij.ImageJ.main(ImageJ.java:517)
이 문제를 해결하기 위해 모든 것을 시도했습니다.
export DISPLAY=:10.0
export DISPLAY=localhost:10.0
포트 0.0도 시도했지만 항상 동일한 오류가 발생합니다.
xhost를 시도한 후
xhost +local:all
xhost: unable to open display ""
xhost: unable to open display ":10.0"
이 문제를 어떻게 해결할 수 있습니까? X 서버가 실행되지 않는다고 생각했기 때문에 startx
해당 포트에서 실행한다고 말했습니다.
내 시스템은 Ubuntu 서버 에디션 10.04입니다.
답변
이 명령은 문제를 해결하는 데 도움이되었습니다.
export DISPLAY=:0
답변
-Djava.awt.headless=true
시작시 매개 변수 를 지정해야합니다 .
답변
DISPLAY 변수 제거
unset DISPLAY
이는 대부분의 경우 (예 : 응용 프로그램 서버 또는 기타 Java 기반 도구 시작)에 도움이되며 많은 명령 줄을 수정하는 것을 방지합니다.
전용 app-server / tools 사용자를 위해 .bash_profile에 추가하는 것도 편할 수 있습니다.
답변
sudo 모드에서 작업중인 것 같습니다. 사용자 모드로 체크 아웃 한 후 다시 시도하세요.
답변
CI (jenkins, ..)에서 maven-surefire-plugin을 통해 자동화 된 단위 테스트를 실행하고 위에서 언급 한 오류가 발생하는 경우 확실한 플러그인 구성을 업데이트해야합니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<systemPropertyVariables>
<java.awt.headless>true</java.awt.headless>
</systemPropertyVariables>
</configuration>
</plugin>
답변
이것은 그것을 고칠 것입니다 :
/usr/bin/java -Djava.awt.headless=true $Your_program
답변
나를 위해 로그인 -X 대신 -Y 작동했습니다.
아래에 표시된대로 신뢰할 수없는 X11이있는 경우 대신 -Y 플래그를 시도하십시오 (호스트를 신뢰하는 경우).
경고 : 신뢰할 수없는 X11 전달 설정 실패 : xauth 키 데이터가 생성되지 않았습니다.