반응형
SMALL

갑자기 잘 되던 프로젝트가 404가 뜬다.

Eclipse에서 Tomcat 구동 에러다. maven 사용하면 종종 발생하는 에러라고 한다.

404 뜸
에러메시지

심각: 클래스 [org.springframework.web.context.ContextLoaderListener]의 애플리케이션 리스너를 설정하는 중 오류 발생
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1420)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1228)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:533)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:149)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4686)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5232)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1427)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1417)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

잘 돌아가던 이클립스에서 톰캣이 갑자기 class를 못찾고 오류가 발생한다는 것.

또는 아래처럼 발생하기도 한다.

SEVERE: Error configuring application listener of class org.springframework.web.util.Log4jConfigListener
java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:527)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:509)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:137)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4823)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5381)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)

두 경우 다 naven dependency를 등록해주면 된다.

프로젝트 우클릭 > properties > Deployment Assembly > add... > Java Build Path Entries > Maven Dependencies

maven dependency를 등록

적용 후 서버 재시작하면 정상적으로 실행된다.

Maven 메뉴에서 "Update Project Configuration"를 실행하는 경우, 해당 정보가 삭제되므로 다시 등록해주면 된다.

워낙 톰캣을 많이 써서... 포트 번호 안겹치게 맞춰주고, Build Path도 톰캣 8.5 버전으로 잘 맞춰줬는데 안되더라.
포트 번호 안겹치게

Build Path도 톰캣 8.5 버전

 String cannot be resolved to a type 에러가 뜨면 JDK 작동이 안되어서 자바 코드를 못읽는 것이니 확인...

혹시 모르니 또 톰캣에 404가 뜨면 Build Path와 포트와 라이브러리도 신경쓰자.

반응형
LIST
반응형
SMALL

ORA-28002: the password will expire within 7 days 오류 해결 방법

간만에 오라클 켜서 DB 접속했더니 ORA-28002: the password will expire within 7 days 에러가 발생했다.

비밀번호 쳤더니 발생한 경고창

이유는 패스워드 기간이 7일 남았다는 말이다. dba 계정에 패스워드를 설정할 때 기간이 정해져있을 경우에 발생한다.

이렇게 해도 오라클 접속은 가능해서 오라클 스크립트에서 남은 기간 확인이 가능한데, cmd도 사용할 겸 둘 다 기록해본다.

1. cmd 창에서 SQL 접속하기

sqlplus //SQL로 접속한다.
Enter user-name: sys as sysdba //sys 계정(두목)에 OS의 시스템 권한으로 접속한다.
Enter password: //비번 입력하지 않고 엔터치면 접속 가능하다.

SQL로 접속했다.

2. password 기간 확인하기

select resource_name,resource_type,limit from dba_profiles; //dba설정에서 이름/타입/limit를 확인합니다.

180일로 설정되어있군요

PASSWORD_LIFE_TIME의 LIMIT 를 확인해보면 180일, 약 6개월로 설정되어 있다.

3. 오라클에서 확인하기

해당 프로젝트의 SQL문에 실행하면 질의결과에 나온다.

이게 훨씬 보기는 편하다

4. 해결방법

간단하다. 비밀번호를 바꿔주면 된다. 기존 비밀번호를 그대로 재설정해줘도 된다.

alter user 계정명 identified by 비밀번호; //계정 비밀번호 변경

또는 아까 확인했던 PASSWORD_LIFE_TIME의 limit를 해제해주는 방법도 있다. 이 경우 180일 후에 alert가 발생하지 않는다.

alter profile default limit PASSWORD_LIFE_TIME unlimited; //기간 제한 해제

cmd 창에서 실행해줘도 되고, 오라클 SQL 창에서도 설정 가능하다!

반응형
LIST
반응형
SMALL

톰캣 로그가 다음 사진과 같이 요상한 한글로 깨지는 경우가 있다.

뷁꽭핽 과 같이 한글깨짐

대부분 이러한 문제는 인코딩이 깨져서 발생하는데, 톰캣설정 시 ANSI로 인코딩 언어가 설정되어있기 때문이다.

터미널 화면 상태창에서 우클릭 > 속성 을 클릭하면 "Tomcat" 속성 화면이 나온다.

 보면 현재 코드 페이지가 949 (ANSI)로 되어 있는데, 이 설정 자체를 EUC-KR로 변경해주면 된다.

방법은 아래와 같다.

1. $TOMCAT_HOME/conf/logging.properties 파일을 텍스트 편집기로 오픈

 

2-1. UTF-8을 EUC-KR 로 변경한다.

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

catalina.org.apache.juli.AsyncFileHandler.level = FINE
catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
catalina.org.apache.juli.AsyncFileHandler.encoding = EUC-KR

localhost.org.apache.juli.AsyncFileHandler.level = FINE
localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
localhost.org.apache.juli.AsyncFileHandler.encoding = EUC-KR

manager.org.apache.juli.AsyncFileHandler.level = FINE
manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
manager.org.apache.juli.AsyncFileHandler.prefix = manager.
manager.org.apache.juli.AsyncFileHandler.encoding = EUC-KR

host-manager.org.apache.juli.AsyncFileHandler.level = FINE
host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
host-manager.org.apache.juli.AsyncFileHandler.encoding = EUC-KR

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = EUC-KR

또는 아예 주석처리 하는 방법도 있다.

2-2. encoding 설정을 전부 모두 주석 처리한다 (주석처리 방법은 '#' 을 추가)

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

catalina.org.apache.juli.AsyncFileHandler.level = FINE
catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
#catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8

localhost.org.apache.juli.AsyncFileHandler.level = FINE
localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
#localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-8

manager.org.apache.juli.AsyncFileHandler.level = FINE
manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
manager.org.apache.juli.AsyncFileHandler.prefix = manager.
#manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8

host-manager.org.apache.juli.AsyncFileHandler.level = FINE
host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
#host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
#java.util.logging.ConsoleHandler.encoding = UTF-8

 

3. 재실행하면 한글로 잘 나온다.

반응형
LIST
반응형
SMALL

workspace 파일을 옮겼더니 에러 발생.

에러는 다음과 같다.

The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

 

Multiple annotations found at this line: 

- javax.servlet.ServletException cannot be resolved to a type 

- javax.servlet.jsp.PageContext cannot be resolved to a type

- javax.servlet.jsp.JspException cannot be resolved to a type

 

환경이 바뀌어서 제대로 서버환경을 안 잡아줘서 생기는 오류였다.


●해결 방법

1. 오류가 발생한 프로젝트  우클릭 → Properties

2. Java Build Path → Add Library

3. Server Runtime 선택

4. 제대로 Tomcat을 설정해준다.

톰캣 두개

나의경우 워크스페이스 자체를 옮기는 바람에 함께 있던 톰캣이 꼬여버린듯. 그래서 새로 다시 연결해주었다.

실행에는 별 문제 없음.

반응형
LIST
반응형
SMALL

+ Recent posts

반응형
LIST