2009-02-03 2 views
0

이것은 java.awt.HeadlessException - 애플릿이 표시되지 않는 질문과 관련되어있다. java.awt.HeadlessException - Applet not displayedjava.awt.HeadlessException - 애플릿이 표시되지 않는다. - 제 2 부

tomcat의 startup.sh 파일에 "export DISPLAY = : 0.0"을 추가 한 후 HeadlessException이 사라졌습니다. 이제 코드의 일부는 별도의 서버 인 배치 서버에서 실행됩니다. 코드가 배치 서버에서 호출 될 때 동일한 HeadlessException이 발생합니다. 배치 서버의 시작 파일에 같은 "export DISPLAY = : 0.0"을 추가하면 예외가 없어졌지만 배치 서버에서 실행중인 다른 (Java가 아닌) 응용 프로그램에 문제가 발생했습니다. 다른 응용 프로그램에서 작동하는 디스플레이를 재정의하기 때문일 수 있습니다.

다음으로 JAVA_OPTS = "- Djava.awt.headless = true"를 배치 서버의 시작 파일로 내 보냈지만 작동하지 않았습니다. 나는 썬의 다음 링크에서 코드가 헤드리스 예외를 검사해야한다고 말한 것을 보았습니다.

http://java.sun.com/j2se/1.4.2/docs/guide/awt/AWTChanges.html

그래서 헤드리스 예외가 작동하게 잡는 것? 마찬가지로 :

try { 

//Code that throws headless exception 

} catch (HeadlessException e) { 

    printStacktrace(); //basically do nothing 
} 

답변

2

당신은 그 예외를 잡을 수 또는 당신이 먼저 확인하여 그것을 피할 수있다 : 당신에게

if (! java.awt.GraphicsEnvironment.isHeadless()) { 
    // code that throws headless exception 
} else { 
    log.info("Skipping GUI portion") 
} 

을 아무도 볼 것되지 않는 서버의 DISPLAY를 설정하지 마십시오, 또는 아무도 볼 수없는 대화 상자에서 다른 사람이 확인을 클릭 할 때까지 영원히 기다릴 수도 있습니다.