기본 콘텐츠로 건너뛰기

4월, 2018의 게시물 표시

java.lang.ClassNotFoundException: ContextLoaderListener 에러 해결 방법 (Eclipse + Tomcat)

[Spring] java.lang.ClassNotFoundException: ContextLoaderListener 에러 해결 완벽 가이드 작성일: 2025. 12. 10 | 분류: Java/Spring Framework Spring MVC 프로젝트를 Eclipse와 Tomcat 환경에서 배포하다 보면 종종 마주치는 악명 높은 에러가 있습니다. 로컬 테스트(Unit Test)에서는 잘 돌아가는데, 서버를 띄우면 갑자기 404 혹은 500 에러와 함께 콘솔에 다음 로그가 찍히는 경우입니다. java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:xxx) ... 이 에러가 발생하면 스프링 컨텍스트가 로드되지 않아 아무런 페이지도 뜨지 않습니다. 이 글에서는 이 에러의 정확한 원인과, Eclipse Deployment Assembly 설정 을 중심으로 한 가장 확실한 해결 방법을 정리합니다. 1. 에러의 원인: "배포된 곳에 파일이 없다" 이 예외(Exception)의 의미는 아주 단순합니다. ⚠️ 문제 상황 Tomcat이 구동되면서 web.xml 을 읽고 리스너를 실행하려는데, org.springframework.web.context.ContextLoaderListener 클래스 파일을 찾을 수 없다는 뜻입니다. 분명히 프로젝트에는 Spring 라이브러리가 추가되어 있는데 왜 못 찾는 걸까요? 원인은 "이클립...

Oracle Calendar

[Oracle] SQL로 달력 만들기: CONNECT BY LEVEL을 활용한 날짜 생성 완벽 가이드 개발을 하다 보면 '데이터가 없는 날짜' 까지 포함해서 조회해야 하는 상황을 자주 마주합니다. 예를 들어 일별 매출 리포트를 뽑는데, 매출이 0원인 날짜는 아예 조회되지 않아 그래프가 뚝뚝 끊기는 현상 같은 것들이죠. 이럴 때 필요한 것이 바로 1일부터 말일까지 꽉 채워진 '달력 테이블(Calendar Dummy Table)' 입니다. 오늘은 오라클(Oracle)의 강력한 계층형 쿼리 기능인 CONNECT BY LEVEL 을 사용하여, 단 3줄의 SQL로 특정 월의 모든 날짜를 생성하는 방법을 심층 분석해 보겠습니다. 1. 핵심 쿼리 분석 가장 먼저, 질문자님께서 공유해주신 코드를 기반으로 핵심 로직을 뜯어보겠습니다. 이 쿼리는 2018년 4월의 1일부터 30일까지를 생성하는 예제입니다. SELECT TO_CHAR(TO_DATE('201804'||LPAD(LEVEL,'2',0), 'YYYYMMDD'),'YYYYMMDD') AS YMD , LEVEL FROM (SELECT TO_DATE('20140601', 'YYYYMMDD') MAKE_DATES FROM DUAL) -- (A) CONNECT BY LEVEL <= TO_CHAR(LAST_DAY(sysdate),'DD') -- (B) 이 쿼리가 작동하는 원리는 다음과 같습니다. (A) DUAL 집합: CONNECT BY 를 수행하기 위한 모태가 되는 1건짜리 데이터입니다. (실제 날짜 값은 바깥에서 하드코딩 되어 있으므로 여기선 단순히 Row Source 역할만 합니다.) ...

SFTP 파일 업로드 및 다운로드

🔒 Java JSch 활용: SFTP 파일 업로드/다운로드 유틸리티 완벽 분석 JSch(Java Secure Channel)는 Java에서 SSH2를 구현한 라이브러리로, 안전한 SFTP 통신을 가능하게 합니다. 파일 다운로드, 업로드, 그리고 파일 전송에 필요한 디렉터리 생성 로직까지 포함된 핵심 유틸리티 코드를 분석해 보겠습니다. 1. 🔑 SFTP 접속 공통 로직 다운로드 및 업로드 함수 모두 공통적으로 **`GetProperties`**를 사용하여 접속 정보를 불러온 후, JSch를 통해 SSH 세션을 설정합니다. 특히 `StrictHostKeyChecking`을 `no`로 설정하는 부분은 최초 접속 시 호스트 키 검사를 생략하여 편리하게 접속하도록 합니다 (보안상 운영 환경에서는 신중하게 고려해야 할 설정입니다). // JSch 초기화 및 세션 설정 JSch jsch = new JSch(); session = jsch.getSession(ID, IP, Integer.parseInt(PORT)); session.setPassword(PWD); // StrictHostKeyChecking 설정 java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); session.connect(); // SFTP 채널 열기 channel = session.openChannel("sftp"); channel.connect(); channelSftp = (ChannelSftp) channel; 2. ⬇️ 파일 다운로드 로직 분석 (`download`...