일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- react
- 통영예쁜카페
- springboot
- tomcat7
- 한성대맛집
- 방이편백육분삼십성신여대
- 방이편백육분삼십
- 통영에어비앤비
- gradle
- 통영
- 자바스크립트에러처리
- 성신여대맛집
- 돈암동맛집
- 국가직
- 한남동맛집
- ubuntu자바설치
- 성북구맛집
- 공무원
- JavaScript
- 통영여행
- 영화추천
- 파이썬
- 퇴사후공무원
- 스페인여행
- ELK
- 서울숲누룽지통닭구이
- npm
- 꼴뚜기회
- 뚝섬역맛집
- 성신여대편백집
- Today
- Total
코린이의 기록
[Tomcat] java.awt.AWTError: Can't connect to X11 window server using 'localhost:10.0' 본문
[Tomcat] java.awt.AWTError: Can't connect to X11 window server using 'localhost:10.0'
코린이예요 2018. 8. 30. 12:16Tomcat 구동 후 404 에러가 발생하였다.
server.xml에서 Contextpath 설정도 잘 해줬는데, 왜 404 에러가 발생하였을까 뒤적거리다가,
Catalina.out을 자세히 보라는 어느 블로그를 보고 로그를 확인해 보았다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 524 SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 525 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'authenticationProvider': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.a.b.administrator.service.CaptchaService com.a.b.administrator.security.AuthenticationProvider.captchaService; nested exception is org.springframework.beans.factory. BeanCreationException: Error creating bean with name 'captchaService' defined in file [/a/web/apache-tomcat-7.0.79/webapps/aui/WEB-INF/classes/com/a/b/administrator/service/CaptchaService.class]: Instantiation of bean failed; nested exception is java.awt.AWTError: Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable. 526 at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:298) 527 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1148) 528 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 529 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 530 at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293) 531 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 532 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290) 533 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191) 534 at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:636) 535 at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:934) 536 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) 537 at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410) 538 at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 539 at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) 540 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5118) 541 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5634) 542 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 543 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571) 544 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561) 545 at java.util.concurrent.FutureTask.run(FutureTask.java:266) 546 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 547 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 548 at java.lang.Thread.run(Thread.java:748) 549 Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.a.b.administrator.service.CaptchaService com.a.b.administrator.security.AuthenticationProvider. captchaService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'captchaService' defined in file [/a/web/apache-tomcat-7.0.79/webapps/aui/WEB-INF/classes/com/a/ b/administrator/service/CaptchaService.class]: Instantiation of bean failed; nested exception is java.awt.AWTError: Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable. 550 at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:531) 551 at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) 552 at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:295) 553 ... 22 more | cs |
▲ Tomcat Catalina.out 로그
이것을 아래 Reference를 통해서 수정 및 적용하여 정상적으로 화면이 출력되는것을 확인할 수 있었다.
로그인과 관련하여 Captcha라는 것을 사용했는데, 이와 관련하여 생긴 오류가 아닐까 싶다. 실제로 Captch관련 소스에서 java.awt.image.BufferedImage 객체를 사용한다.
1 | org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'captchaService' defined in file [/a/web/apache-tomcat-7.0.79/webapps/aui/WEB-INF/classes/com/a/b/administrator/service/CaptchaService.class]: Instantiation of bean failed; nested exception is java.awt.AWTError: Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable. | cs |
일부 내용을 발췌 하면
이것은 일종의 JDK의 버그이다. 원인은 자바가 BufferedImage 를 생성하고 실제로 Graphics 객체를 얻어오기 위해 getGraphics나 createGraphics 메소드를 부를때, 실제로 display하거나 mouse, keyboard 자원을 하나도 쓰지 않을 것임에도 불구하고 내부적으로 AWT Toolkit이 그것들에 대한 자원을 얻어오게 되어있었기 때문이다.
해결 방법은 의외로 간단하였다.
JRE 1.3 이하 버전일 경우 Xvfb를 사용해야하는데 여러가지 패키지를 설치해야한다. 나의경우는 1.8을 사용하고 있기 때문에 아래와 같은 방법으로 해결하였다.
JRE 1.4 이상일 경우 그리고 나의 경우는 톰캣구동에서 발생된 에러라서 catalina.sh에 아래옵션만 추가한 후 재구동 하면 된다.
1 | CATALINA_OPTS=-Djava.awt.headless=true |
처음에는 이 옵션을 어디에 두어야할지 몰라서 CATALINA_OPTS 아래다 추가했는데, 해당 에러가 없어지지 않았다.
그래서 맨 윗줄에 추가하여 재구동하였더니 정상적으로 동작하였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 107 # OS specific support. $var _must_ be set to either true or false. 108 CATALINA_OPTS=-Djava.awt.headless=true 109 cygwin=false 110 darwin=false 111 os400=false 112 hpux=false 113 case "`uname`" in 114 CYGWIN*) cygwin=true;; 115 Darwin*) darwin=true;; 116 OS400*) os400=true;; 117 HP-UX*) hpux=true;; 118 esac 119 120 # resolve links - $0 may be a softlink 121 PRG="$0" | cs |
▲ catalina.sh 일부
Reference : http://blog.naver.com/PostView.nhn?blogId=galahad76&logNo=20042609592
'Web > Tomcat' 카테고리의 다른 글
[Tomcat] Java 파일 수정시 톰캣 자동 Reload 기능 off하기 (0) | 2019.08.29 |
---|---|
[Tomcat] 톰캣 띄운후 404 error 발생할때 (0) | 2019.01.16 |
[Tomcat] java.net.BindException: 주소가 이미 사용 중입니다 <null>:8080 (0) | 2019.01.16 |
[Tomcat] memory leak (0) | 2018.08.27 |